京东笔试第三题怎么做

我把我的代码贴上来了,不知道怎么做的地方写了TODO,希望有大佬可以指点一下,谢谢!祝大家秋招都顺利!

引流一下:百度 阿里 腾讯 字节跳动 小红书

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }

        // 最小的两个数之和大于最大的数

        Deque maxNum = new LinkedList<>(); // 存区间最大值
        Deque; minNum = new LinkedList<>(); // 存区间最小值

        int left = 0; // 初始化左端点

        int[] maxrange = new int[2];  // 存最大区间的左右两个端点
        maxrange[0] = 0; // 左端点初始为 0
        maxrange[1] = 1; // 右端点初始为 1
        int maxlen = 2; // 最大区间的长度

        for (int right = 0; right < n; right++) {
            while (!maxNum.isEmpty() && nums[maxNum.getFirst()] < nums[right]) {
                maxNum.removeFirst();
            }
            maxNum.addLast(right);

            while (!minNum.isEmpty() && nums[right] < nums[minNum.getFirst()]) {
                minNum.removeFirst();
            }
            minNum.addLast(right);

            if (right - left > 1) { // 如果区间长度大于 2,判断最小值加第二小值是否大于最大值
                // 如果最小值加第二小值大于最大值, flag = true;
                // 反之,flag = false;
                // TODO: 怎么存第二小值从而判断 flag?
                boolean flag = true;

                if (flag) { // 如果满足三角形要求,判断区间长度是否变长
                    if (right - left + 1 > maxlen) {
                        maxlen = right - left + 1;
                        maxrange[0] = left;
                        maxrange[1] = right;
                    }
                } else { // TODO: 如果不满足三角形要求,怎么做?
                    while (right - left > 1) {
                        left++;
                        while (!maxNum.isEmpty() && maxNum.getFirst() < left) maxNum.removeFirst();
                        while (!minNum.isEmpty() && minNum.getFirst() < left) minNum.removeFirst();
                    }
                }
            }
        }

        System.out.println(maxrange[0] + 1 + " " + (maxrange[1] + 1));
    }
全部评论
滑动窗口+优先队列做
点赞 回复 分享
发布于 2024-08-24 19:19 北京

相关推荐

2025-12-12 19:01
南京航空航天大学 C++
秋招没咋投,准备 wxg 转正之后摆烂了。结果不堪字节 HR 的骚扰还是面了一下字节。之前想去字节的时候怎么面都挂。现在想着随便面一下结果三面技术面都意外顺利还有加面。十月中旬字节发了意向,wxg 转正结果无响应。十月底字节拉了保温群,wxg 口头通过,系统显示考核中。十一月初和字节 ld 交流之后得知 base 居然能选海外,甚至能小 wlb 一下,wxg 无响应无人联系。十一月中旬把字节 base 转到了海外,wxg 流程灰了,一问超时忘处理了,过两天又变考核中了。十一月下旬字节换了海外 HR 对接,问了期望薪资,wxg 考核终于显示通过,无 HR 保温,无其他保温。十一月底给字节报了个天价,想吓吓他们,同时告诉微信字节要开了,微信无响应。同样十一月底字节 HR 告诉我确实给不到那么高,但是能拿期权补上,问能不能接受。微信无响应。同样十一月底字节 HR 告知了具体方案,符合预期。 微信无响应。十二月上旬催 wxg 不开我就盲拒了,wxg HR 火急火燎的打电话问情况,问期望。我给了一个不算夸张的总包数字,因为今年市场在涨,过了三天还不联系我,我再催,约时间下午打电话,非得在我给出的数字上压下去几万,微信又不差这点,为什么不能满足我,让我没有拒绝的理由呢?一番纠结抗争,求稳还是追求挑战,最终选择接受迎接新的挑战,因为堂吉诃德永远不会停下脚步!回想起来,在 wxg 谈薪的阶段,我认为并没有给予我一定的重视,即使 HR 表示我在实习期间的表现和之前的面评都很靠前。也没有感觉到想要争取我,虽然我表示拒了 offer 之后要给我加面委定 t6 再涨,但我三个月没面试让我面面委那就是白给,还是算了。有缘再见了我亲爱的 wxg,再见了曾经的梦中情厂,再见亲爱的 mt,再见亲爱的朋友们。也再见,北京的一切。我想润了。秋招结束,卸载牛客,下一个三年,下一个五年,下一个十年后再来看看。
面试中的大熊猫爱吃薯...:我嫉妒得狗眼通红
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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