2个月前做了Amazon OA,今天看了下还是一样的。贴个图,给大家参考下!因为之前写了面经,但是没有贴原题,大家可能会有一些小疑问。如果有疑问可以私信我。有空会回答的
之前整理的amazon的比较全面的面经在这里
-
第一题是Amazon Fresh送货的
-
第二题是无人机送货
2个月前做了Amazon OA,今天看了下还是一样的。贴个图,给大家参考下!因为之前写了面经,但是没有贴原题,大家可能会有一些小疑问。如果有疑问可以私信我。有空会回答的
之前整理的amazon的比较全面的面经在这里
第一题是Amazon Fresh送货的
第二题是无人机送货
楼主可以问下第二题怎么做吗?今天用也做了这两题但是第二题没调试完
先Collections.sort 2个input list。然后int sum = Integer.MIN_VALUE;
2个for循环这2个ArrayList, 循环里定义2个变量,forwardRoute和returnRoute,通过他们的index get到。
后面的核心逻辑我贴下:
int tmp = forwardRoute.get(1) + returnRoute.get(1);
if (tmp > maximumOperationTravelDistance) {
continue;
}
if (tmp >= sum) {
List<Integer> l = new ArrayList<>();
l.add(forwardRoute.get(0));
l.add(returnRoute.get(0));
if (tmp > sum) {
result = new ArrayList<>();
}
result.add(l);
sum = tmp;
}
有人说这个题可以sort后用binarysearch, 比如说sort长的list,然后用短的list在长的list里面搜索,可我想不出来,如果在binarysearch过程中很多相等的要怎么处理呢?例如 在list[1,1,2,2,3,3,3,6,6,6]中搜索小于等于5的最近的数要怎么处理(返回所有index)?
用binary search的正常写法,在left right mid这3个点之间的情况做一些小改动就可以实现了。
那如果用左右夹板找出所有的3,时间复杂度会不会是O(n)?我比较笨哈哈,求指点
举个栗子吧,
list[1,1,2,2,3,3,3,6,6,6]
L M 5 R
第一步: 用Binary Search移动左右指针,逼近target number 5,直到有2个或者更少的数在L和R之间。
list[1,1,2,2,3,3,3,6,6,6]
L M 5 R
list[1,1,2,2,3,3,3,6,6,6]
L M5 R
第二步:post-processing,谁的差值的更小就移动谁。如果我们要找出小于等于5差值最小的
数,那就是3和5,那么就向左移动L,直到L-1的值小于L停止。
list[1,1,2,2,3,3,3,6,6,6]
L
Time Complexity就很容易看出来了,是先binary search,直后操作L,如果中间操作了k个
数,就是O(logn + k)
请问amazon OA 是不是只能用java
不是,语言不限的。
第一题就是很简单的x2 + y2 比较大小吗 还是我想错了
第一题第二个testcase为什么没输出正确的顺序呢?不应该是[[2, 4], [5, 3], [3, 6]]么?
还是numDestination和delivery一致的时候不用排序?
谢谢 楼主!
请问楼主是校招的吗?
社招奥
我作的也是这两题
楼主你好,我想问一下有没有可能出现forwardroutelist 或者returnroutelist为空。只在其中一个取值的情况呢。还是说必须是去和返的值相加最优解呢。
这题的要求应该是不能为空的,我记得