c51数组循环移位_编程之美 2.17 数组循环移位

编程之美 2.17 数组循环移位

把一个含有N个元素的数组循环右移K位, 要求时间复杂度位O(N), 且只允许使用两个附加变量.

解法: 使用逆序方法, 分开两段求逆序, 再整体求逆序.

代码 (GCC 4.7.1):

/* * BeautyOfProgramming.cpp * * Created on: 2013.11.7 * Author: Caroline * Time: O(N) */ #include #include #include #include int main (void) { std::vector<:string> sv = {"a", "b", "c", "d", "1", "2", "3", "4"}; unsigned int n = 4; std::cout << "array : "; for(const auto s : sv) std::cout << s << " "; std::cout << std::endl; std::reverse(sv.begin(), sv.begin()+4); std::reverse(sv.begin()+4, sv.end()); std::reverse(sv.begin(), sv.end()); std::cout << "reverse (" << n <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值