Message on Whatsapp 8879355057 for DSA(OA + Interview) + Fullstack Dev Training + 1-1 Personalized Mentoring to get 10+LPA Job
0 like 0 dislike

All past online assesments of Amazon can be found using the tag "amazon_oa" in the search bar.

Here is the link :

in Online Assessments by Expert (111,530 points) | 9,755 views

2 Answers

0 like 0 dislike
Best answer

Recently took the OA from Amazon, and here are the two questions being assigned:



Given an array of points where points[i] = [xi, yi] represents a point on the X-Y plane and an integer k, return the k closest points to the origin (0, 0).

The distance between two points on the X-Y plane is the Euclidean distance (i.e., √(x1 - x2)2 + (y1 - y2)2).

You may return the answer in any order. The answer is guaranteed to be unique (except for the order that it is in).


Example 1: image


Input: points = [[1,3],[-2,2]], k = 1
Output: [[-2,2]]
The distance between (1, 3) and the origin is sqrt(10).
The distance between (-2, 2) and the origin is sqrt(8).
Since sqrt(8) < sqrt(10), (-2, 2) is closer to the origin.
We only want the closest k = 1 points from the origin, so the answer is just [[-2,2]].

Example 2:

Input: points = [[3,3],[5,-1],[-2,4]], k = 2
Output: [[3,3],[-2,4]]
Explanation: The answer [[-2,4],[3,3]] would also be accepted.



  • 1 <= k <= points.length <= 104
  • -104 < xi, yi < 104

Code : 


class Solution {
    vector<vector<int>> kClosest(vector<vector<int>>& points, int k) {
        priority_queue<pair<int, int>> maxPQ;
        for (int i = 0 ; i < points.size(); i++) {
            pair<int, int> entry = {squaredDistance(points[i]), i};
            if (maxPQ.size() < k) {
                // Fill the max PQ up to k points
            } else if (entry.first < {
                // If the max PQ is full and a closer point is found,
                // discard the farthest point and add this one
        // Return all points stored in the max PQ
        vector<vector<int>> answer;
        while (!maxPQ.empty()) {
            int entryIndex =;
        return answer;

    int squaredDistance(vector<int>& point) {
        // Calculate and return the squared Euclidean distance
        return point[0] * point[0] + point[1] * point[1];
by Expert (111,530 points)
edited by
0 like 0 dislike


Amazon Alexa AI team is working to add feature that suggest days for camping based on the weather forecast. According to survey, a day is ideal for camping if the amount of rainfall has been non-increasing for the prior k days from the considered day and will be non-decreasing for the following k days from the considered day. Given the predicted rainfall for the next n days, find all ideal days. Formally a day is ideal if the following is true.
Return the ideal days in ascending order. The ith element of the array represents the data for the day i+1. Example, given/Input day=[3,2,2,2,3,4], k=2
here day1>=day2>=day3<=day4<=day5, so day3 is ideal
also day2>=day3>=day4<=day5<=day6, so day4 is ideal
The answer is [3,4]
Ex:- Given/Input day=[1,0,1,0,1], k=1
So, day1>=day2<=day3
Output: [2,4]


Ex:- Given/input day=[1,0,0,0,1], k=2
So, day1>=day2>=day3 <=day4<=day5
Output: [3]


Ex:- Given day=[1,1,1,1,1,1,1,1,1,1], k=3


So, day1>=day2>=day3>=day4<=day5<=day6<=day7
Output: [4,5,6,7]


Input method takes 2 arguments day[n] and k(an integer)
returns int[], the ideal days in sorted ascending

Code : 

def idealDays(days, k):
    n = len(days)
    result = []
    leftIdeal = [0 for _ in range(n)]
    rightIdeal = [0 for _ in range(n)]
    for i in range(1, n):
        if days[i] <= days[i-1]:
            leftIdeal[i] = leftIdeal[i-1] + 1
    for i in reversed(range(n-1)):
        if days[i] <= days[i+1]:
            rightIdeal[i] = rightIdeal[i+1] + 1
    for i in range(n):
        if leftIdeal[i] >= k and rightIdeal[i] >= k:
    return result
by Expert (111,530 points)
0 0
can you translate this to java