数组的循环右移问题

还有一个要求是只用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个元素。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值