【百度】提前批Java研发一面面经

一顿狂轰乱炸

zkxzhuzhu alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt alt

要实现这个功能,可以首先遍历数组一次来找到最大值和最小值以及它们的索引,然后再进行两次交换.

public class ArrayMinMaxSwap {
    public static void main(String[] args) {
        int[] nums = {5, 3, 8, 4, 2};
        swapMinMax(nums);
        for (int num : nums) {
            System.out.print(num + " ");
        }
    }

    public static void swapMinMax(int[] nums) {
        if (nums == null || nums.length < 2) {
            return;
        }

        int minIndex = 0;
        int maxIndex = 0;
        int min = nums[0];
        int max = nums[0];

        // 找出最小值和最大值的索引
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] < min) {
                min = nums[i];
                minIndex = i;
            }
            if (nums[i] > max) {
                max = nums[i];
                maxIndex = i;
            }
        }

        // 如果最大值或最小值已经在正确的位置,则不需要交换
        if (minIndex != 0) {
            // 将最小值交换到数组的第一个位置
            int temp = nums[0];
            nums[0] = min;
            nums[minIndex] = temp;
        }
        if (maxIndex == nums.length - 1 || (maxIndex != 0 && maxIndex != minIndex)) {
            // 如果最大值已经在最后一个位置,或者最大值和最小值不是同一个元素,则交换
            int temp = nums[nums.length - 1];
            nums[nums.length - 1] = max;
            nums[maxIndex] = temp;
        }
        // 注意:如果最大值和最小值相同且都在第一个位置,则上面的代码会进行不必要的交换然后恢复原位
        // 但由于总是从索引1开始寻找最大值和最小值,这种情况下的交换是无害的
    }
}

注意:

  • 这个方法首先遍历数组找到最大值和最小值的索引以及它们的值。
  • 然后,它检查这两个值是否已经在它们的目标位置(即最小值在数组的第一个位置,最大值在数组的最后一个位置)。
  • 如果不在,就进行相应的交换。
  • 这里有一个小的优化点:如果最大值已经在最后一个位置,且它不与最小值相同(即它们不是同一个索引),那么可以避免对最大值的第二次交换。但是,为了代码的清晰性和易读性,这里还是保持了两次可能的交换。
  • 需要注意的是,如果数组只有一个元素或为空,这个方法将直接返回,因为在这种情况下没有最小值或最大值的概念,或者没有位置可以交换。

alt

#软件开发笔面经#
校招面经大全 文章被收录于专栏

收录各个网友分享的各个公司的面经,并给出答案。

全部评论
老哥知道什么时候出结果吗已经等了一天了
点赞 回复 分享
发布于 2024-07-18 16:55 安徽
大佬觉得go怎么样,双非go是不是必死
点赞 回复 分享
发布于 2024-07-18 15:51 北京

相关推荐

不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
26
135
分享

创作者周榜

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