还有一个要求是只用2个变量
我的思路 不知道对不对
每个位置都会被移到某个位置上 只需要找到那个位置即可 这个对应关系是
int calculateTargetIndex(int index) {
if(index < k && index >= 0)
//在最后k个中拿
return index + k;
else
return index + k - len;//len需要计算 这里假定得知
}
当然了,K已经取余过了
然后把第一个数挖出来
int index = 0;
int value = xxx;
calculateTargetIndex(index)就是你将要被放置的地方
然后那个地方的值 提出来 放到value里
那个index也缓存起来
最终应该都能找光了把。。。
看到一个不错的思路,时间复杂度是O(2)
1、先将整个数组反转。
2、然后再反转前shift个元素。
3、接着再反转后N-shift个元素。