[LeetCode] 88. Merge Sorted Array java

来源:互联网 发布:网眼监控软件破解版 编辑:程序博客网 时间:2024/05/22 16:51
    /**88. Merge Sorted Array      * @param nums1     * @param m     * @param nums2     * @param n     * 两个有序数组,合并     */    public void merge(int[] nums1, int m, int[] nums2, int n) {        int x=m-1, y=n-1;        for (int i=m+n-1; i>=0; i--) {            if (x>=0 && y>=0) {                if (nums1[x] > nums2[y]) {                    nums1[i] = nums1[x];                    x--;                } else{                    nums1[i] = nums2[y];                    y--;                }            } else if (x>=0) {                nums1[i] = nums1[x];                x--;            } else {                nums1[i] = nums2[y];                y--;            }        }    }

//从后往前比较,直接定位
从后往前合并,不用移动数组

改进,减少逻辑判断

    public void merge1(int[] nums1, int m, int[] nums2, int n) {        int i = m-1;        int j = n-1;        int index = m+n-1;        while(i >= 0 && j >= 0){            if(nums1[i] > nums2[j])                nums1[index--] = nums1[i--];            else                nums1[index--] = nums2[j--];        }        while(i >= 0) nums1[index--] = nums1[i--];        while(j >= 0) nums1[index--] = nums2[j--];    }
0 0
原创粉丝点击