Java算法--亚马逊真题
第一道题
给定一个数组arr,含有n个数字,都是非负数
给定一个正数k
返回所有子序列中,累加和最小的前k个子序列累加和
假设K不大,怎么算最快?
//子序列可以不连续
public static int[] process(int[] array, int k) {
Arrays.sort(array);
PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1] - o2[1];
}
});
int[] result = new int[k];
queue.add(new int[] {0, array[0]});
for(int i = 1; i < k; i ++) {
int[] cur = queue.poll();
int curVal = cur[1];
int curIndex = cur[0];
result[i] = curVal;
if(curIndex + 1 < array.length) {
queue.add(new int[] {curIndex + 1, curVal - array[curIndex] + array[curIndex + 1]});
queue.add(new int[] {curIndex + 1, curVal + array[curIndex + 1]});
}
}
return result;
}
第二道题
给定一个数组arr,含有n个
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
八股文+场景题+算法真题 文章被收录于专栏
Java全新整理八股文 + 场景题 + 算法 精心设计,面试命中率超过80% 专栏优势: 1、问题和答案已经整理到位,答案更专业,可以直接回答,不需要额外总结! 2、场景题讲解清晰,适用于大部分场景的项目,并且持续更新中 3、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】

SHEIN希音公司福利 248人发布