Merge Sorted Array

題目:

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.

思路:

注意題目Note部分說的nums1空間足夠,所以我們一開始可以就可以用個指針k指向nums1的下標m+n-1處,然後nums1和nums2都從最後一個往前比,誰大就把誰放在k指向的位置。如果是m先減到-1,還要把nums2的剩餘部分放到nums1上去,n先減到-1,就直接結束了。具體代碼如下:


public class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int k = m + n -1;
     	m -= 1;
     	n -= 1;
    	while(m >= 0 && n >= 0) {
    		if(nums1[m] > nums2[n]) {
    			nums1[k--] = nums1[m--];
    		} else {
    			nums1[k--] = nums2[n--];
    		}
    	}
    	while(n >= 0) {
    		nums1[k--] = nums2[n--];
    	}
    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章