Java算法--亞馬遜真題
第一道題
給定一個(gè)數(shù)組arr,含有n個(gè)數(shù)字,都是非負(fù)數(shù)
給定一個(gè)正數(shù)k
返回所有子序列中,累加和最小的前k個(gè)子序列累加和
假設(shè)K不大,怎么算最快?
//子序列可以不連續(xù) 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; }
第二道題
給定一個(gè)數(shù)組arr,含有n個(gè)
剩余60%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購買
八股文+場景題+算法真題 文章被收錄于專欄
Java全新整理八股文 + 場景題 + 算法 精心設(shè)計(jì),面試命中率超過80% 專欄優(yōu)勢: 1、問題和答案已經(jīng)整理到位,答案更專業(yè),可以直接回答,不需要額外總結(jié)! 2、場景題講解清晰,適用于大部分場景的項(xiàng)目,并且持續(xù)更新中 3、分享學(xué)習(xí)心得【知識(shí)點(diǎn)的廣度和深度,算法有哪些坑,如何準(zhǔn)備面試等等】