Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1and nums2 are m and n respectively.
1 public class Solution { 2 public void merge(int A[], int m, int B[], int n) { 3 4 int i=m-1; 5 int j=n-1; 6 int k=m+n-1; 7 8 while(i>=0 && j>=0) { 9 A[k--] = A[i] > B[j] ? A[i--] : B[j--]; //!wrong!!! after ?, i,j value changed. A[i--] > B[j--] ? A[i] : B[j] 10 } 11 12 while(j>=0) { 13 A[k--] = B[j--]; 14 } 15 } 16 }
1 public class Solution { 2 public void merge(int[] nums1, int m, int[] nums2, int n) { 3 int[] newArr = new int[m+n]; 4 int i = 0,j = 0,k = 0; 5 while(i < m || j< n) 6 { 7 int a = i < m ?nums1[i] :Integer.MAX_VALUE; 8 int b = j < n ?nums2[j] :Integer.MAX_VALUE; 9 if(a > b) 10 { 11 newArr[k++] = b; 12 j++; 13 } 14 else 15 { 16 newArr[k++] = a; 17 i++; 18 } 19 } 20 System.arraycopy(newArr, 0, nums1, 0, newArr.length); 21 } 22 }
时间: 2025-01-01 11:31:01