这个题做得有点怀疑智商了,看了题,感觉题目的意思就是让用O(1)的空间复杂度来做,
但是只想到O(m*n)的时间复杂度的做法,感觉应该不是最优,就直接看答案了,果然不是最优,竟让忘记
倒着把值放入数组,呃,做的有点怀疑智商。
代码:
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
int a=m-1,b=n-1,cur=m+n-1;
while(a>=0&&b>=0){
A[cur--]=A[a]>B[b]?A[a--]:B[b--];
}
while(b>=0)
A[cur--]=B[b--];
}
};