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、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】

全部评论
可是直接sort不就有可能不是子序列了吗?
点赞 回复 分享
发布于 2024-09-11 01:03 山东

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务