题号:88
难度:Easy
链接:https://leetcode.cn/problems/merge-sorted-array
思路
空间都在nums1
中分配好了,从其最后一位开始填入即可。
设三个指针,分别指向m-1
,n-1
,m+n-1
,将前两者中更大的元素填入后者,并--
指针即可。
代码
#include <vector>
using std::vector;
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if(m==0){
nums1=nums2;
return;
}
if(n==0) return;
int i=m-1,j=n-1,k=m+n-1;
while(k>=0){
int val_1=(i<0)?nums2[j]-1:nums1[i];
int val_2=(j<0)?nums1[i]-1:nums2[j];
if(val_1>val_2){
nums1[k--]=val_1;
--i;
}
else{
nums1[k--]=val_2;
--j;
}
}
}
};
提交结果
全文完
Comments NOTHING