数组循环位移K位
2015-07-07 16:51
281 查看
来自《编程珠玑》,将数组看成一个向量x=ab,那么循环右移后数组就变成ba。从向量的角度考虑
(a-1b-1)-1=ba
(a-1b-1)-1=ba
/* 不用临时变量交换a[begin]和a[end]两内存单元的内容 */ void stringReverse(char a[], int begin, int end) { for(; begin < end; begin++, end--){ a[begin] ^= a[end]; a[end] ^= a[begin]; a[begin] ^= a[end]; } } void loopRightShift(char a[], int n, int k) { k %= n; stringReverse(a, 0, n-k-1); /* 先对a[0...n-k-1]这(n-k)个字符逆序 */ stringReverse(a, n-k, n-1); /* 再对a[n-k...n-1]这k个字符逆序 */ stringReverse(a, 0, n-1); /* 最后对整个字符串逆序 */ } |
相关文章推荐
- root权限对SYSTEM目录拷贝文件,adb通过wifi连接android设备的方法
- zookeeper browser 工具
- 四舍六入五考虑
- PHP正则表达式
- LeetCode17:Letter Combinations of a Phone Number
- 负面偏好
- Oracle数据库之PL/SQL触发器
- DeepLearnToolBox笔记
- 文本分类特征选择方法——卡方检验信息增益
- 汉诺塔的简单实现
- Python的函数
- 输入10个数,求出最大元素是第几个数(数组作为函数参数)
- 打印1到最大的n位数
- thinkphp 内存查询表 防止多次查库
- cloudstack安装篇1-linux命令修改IP信息
- Chrome下如何复制禁止复制网页上的文字
- 虚拟机克隆后修改网卡
- Chrome下如何复制禁止复制网页上的文字
- Chrome下如何复制禁止复制网页上的文字
- Chrome下如何复制禁止复制网页上的文字