题解 | #合并两个有序的数组#

合并两个有序的数组

http://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665

双指针。不开辟额外的空间。替换的思想。
往num1中方放数据,若num2先遍历完,就结束了(说明nums2中的数据都已经添加到num1中了),
若num1先遍历完,则将nums2中剩下的加入到num1中,完成。

public class Solution {
    public void merge(int nums1[], int m, int nums2[], int n) {
        int nums1End = m-1;
        int nums2End = n-1;
        int index = m+n-1;//合并后最后一个元素所在的位置

     while(nums1End >= 0 && nums2End >= 0)//AB合并,谁大就先放谁
            nums1[index --] = nums1[nums1End] > nums2[nums2End] ? nums1[nums1End --] : nums2[nums2End --];
        while(nums2End >= 0)//如果B没有遍历完,那么之间丢在A数组里面
            nums1[index --] = nums2[nums2End --];
    }
}
全部评论

相关推荐

牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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