面试算法题

文章讲述了在项目收缩时,作者通过分享合并递增数组的面试题,反映了技术求职者的境遇和市场动态。
摘要由CSDN通过智能技术生成

        最近很迷茫,甲方没有经费二开项目了。估计合同到期这项目就被砍了,(项目经理已经被砍了)感觉合同到期也要被裁。听说朋友说现在工作不怎么好找,分享一道朋友前几天的面试算法题。

        给你两个递增的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按递增排列。

        

public static int[] merge(int[] nums1, int m, int[] nums2, int n) {
        int p1 = m - 1; // nums1数组的有效元素末尾索引
        int p2 = n - 1; // nums2数组的末尾索引
        int p = m + n - 1; // 合并后的数组的末尾索引
        int[] result = new int[m + n];
        // 从后往前遍历,将较大的元素依次放入合并后的数组的末尾
        while (p1 >= 0 && p2 >= 0) {
            if (nums1[p1] >= nums2[p2]) {
                result[p] = nums1[p1];
                p1--;
            } else {
                result[p] = nums2[p2];
                p2--;
            }
            p--;
        }

        // 如果nums2中还有剩余元素,将其依次放入合并后的数组的前面
        while (p2 >= 0) {
            result[p] = nums2[p2];
            p2--;
            p--;
        }

        // 如果nums1中还有剩余元素,将其依次放入合并后的数组的前面
        while (p1 >= 0) {
            result[p] = nums1[p1];
            p1--;
            p--;
        }
        return result;
    }

总体思路就是倒着去比较,还是比较简单的。其实这种简单的题目好像没啥必要发博客记录,但是很想发一篇,感叹下市场。诶~~~~~~~~~~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值