链接:www.nowcoder.com/practice/e1…
思路:开始时数组是这样的,有2部分a和b,第一部分数组a有n个,第二部分数组b有n-m个数
我们的目标时这样的,把a和b位置换一下,
只需要,先把整个数组反转,数组a在右边,数组b在左边,
这个时候就发现只要将a和b分别反转一下,就得到了我们要的结果了
这个题要求空间复杂度为O(1),开始没有思路,写不出来,画了图以后就简单了
class Solution {
public:
vector<int> solve(int n, int m, vector<int>& a) {
// write code here
if(a.empty()) return a;
m%=n;
if(m==0) return a;
reverse(a.begin(), a.end());
reverse(a.begin(), a.begin()+m);
reverse(a.begin()+m, a.end());
return a;
}
};