双指针2合并两个有序数组

Posted 念奕玥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双指针2合并两个有序数组相关的知识,希望对你有一定的参考价值。

leetcode 88. 合并两个有序数组

分析:两个数组都有序。把nums2合并到nums1中去,不额外新建数组。
思路:两个数组,所以一个数组放一个指针。由于数组都有序,所以指针的开始位置可以选择都从头或尾开始。由于需要把nums2合并到nums1中去,指针从头部开始遍历容易造成nums1原本数据被覆盖掉,所以选择两个指针都从数组的尾部开始。
然后开始对两个数组的值进行比较。

class Solution 
    public void merge(int[] nums1, int m, int[] nums2, int n) 
        // int[] res = new int[m+n];
        int i=m-1,j=n-1,index=m+n-1;
        while(i>=0 && j>=0)
            if(nums1[i]<=nums2[j])
                nums1[index--]=nums2[j--];
            else
                nums1[index--]=nums1[i--];
            
        
        //若nums2种数据未遍历完
        if(j>=0)
            while(j>=0 & index>=0) nums1[index--]=nums2[j--];
        
        //不额外考虑nums1未遍历完的情况,若nums1未遍历完,说明留下的都是排好序的数值小的值
        //还在原位置即可
    

以上是关于双指针2合并两个有序数组的主要内容,如果未能解决你的问题,请参考以下文章

python算法双指针问题:两个有序数组的合并

Leetcode刷题100天—88. 合并两个有序数组(数组+双指针)—day23

Leetcode刷题100天—88. 合并两个有序数组(数组+双指针)—day23

LeetCode | 双指针

思维导图整理大厂面试高频数组24: 合并两个有序数组的两种双指针思想, 力扣88

思维导图整理大厂面试高频数组24: 合并两个有序数组的两种双指针思想, 力扣88