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 山东

相关推荐

02-23 12:32
已编辑
门头沟学院 嵌入式工程师
King987:学历没有问题,然后既然有实习经历的话,把这个放在上面多写一点,哪怕你自己包装一下,只要能圆回来就行,既然有实习经历的话,肯定主要看实习经历之类的。然后也会主要问这里多准备准备
点赞 评论 收藏
分享
牛客464620405号:随便投,随便找,中国经过40多年的改革开放,人才缺口和职位空缺是巨大的,中国现在属于遍地黄金的年代,属于90后和00大机遇的时代
点赞 评论 收藏
分享
昨天 11:42
门头沟学院 Java
爱学习的小女孩:请问一下双非本的简历怎么过好像在boss上投递,学历都被卡住了,是要简历很优秀直接去官网投吗?
投递字节跳动等公司6个岗位 > 双非本科求职如何逆袭 字节求职进展汇总
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务