题目:
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 nums1 and nums2 are m and n respectively.
代码:
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i1 = m-1, i2 = n-1, i = m+n-1; while ( i1>=0 && i2>=0 ){ if ( nums1[i1]<nums2[i2] ){ nums1[i--] = nums2[i2--]; } else{ nums1[i--] = nums1[i1--]; } } while (i2>=0) nums1[i--] = nums2[i2--]; } };
tips:
双指针,从后往前扫描。
如果最后i1大于等于0则不用处理了;如果最后i2大于等于0,再处理一下。记住。
时间: 2024-11-06 03:36:19