[LeetCode] 88. Merge Sorted Array java

    xiaoxiao2021-03-25  124

    /**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--]; }
    转载请注明原文地址: https://ju.6miu.com/read-13075.html

    最新回复(0)