遇见YY

导航

 

合并两个有序数组--LeetCode:https://leetcode-cn.com/problems/merge-sorted-array

题目虽然归类于简单类型,鉴于题目要求是合并到传入参数nums1,如果不从后向前进行合并的话,则要么浪费空间(一般做法是对num1拷贝一份),要么很复杂!

特此记录:从后向前思考!

public class Main {
    public static void main(String[] args) {
        int[] nums1= {1,2,3,0,0,0};
        int   m    = 3;
        int[] nums2= {2,5,6};
        int   n    = 3;
        merge(nums1,m,nums2,n);
        System.out.println(Arrays.toString(nums1));
    }

    public static void merge(int[] nums1,int m,int nums2[],int n){
        int nums1Index = m-1;
        int nums2Index = n-1;


        for (int i=m+n-1;i>-1;i--) {
            if (nums1Index == -1){
                nums1[i] = nums2[nums2Index--];
                continue;
            }
            if (nums2Index == -1){
                nums1[i] = nums1[nums1Index--];
                continue;
            }
            if (nums1[nums1Index] >= nums2[nums2Index]){
               nums1[i] =  nums1[nums1Index--];
            }else {
                nums1[i] =  nums2[nums2Index--];
            }
        }
    }

}

 

posted on 2020-08-14 17:12  一骑红尘妃子笑!  阅读(183)  评论(0)    收藏  举报