博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.17 数组循环移位
阅读量:6584 次
发布时间:2019-06-24

本文共 602 字,大约阅读时间需要 2 分钟。

问题:

如标题,要求时间复杂度为O(N)。

解法:

右移k位,前k位逆序,后N-k位逆序,再整个逆序即可。

 

#include 
#include
void reverse(int* array, int b, int e){ int temp = 0; for(; b < e; b++,e--) { temp = array[e]; array[e] = array[b]; array[b] = temp; } return;}void rightShift(int* array, int n, int k){ k = k % n; reverse(array, 0, n - k - 1); reverse(array, n - k, n - 1); reverse(array, 0, n - 1); return;}int main(){ int array[] = {6,7,8,9,1,2,3,4}; int i = 0; rightShift(array, 8, 4); for (; i < 8; i++) { printf("%d\n", array[i]); } return 0;}

 

 

转载地址:http://lzano.baihongyu.com/

你可能感兴趣的文章
Generalization and Zeros
查看>>
kthread_run【转】
查看>>
利用linux信号机制调试段错误(Segment fault)【转】
查看>>
【POJ 3104】Drying
查看>>
UVa/数组与字符串习题集
查看>>
Subscribe的第四个参数用法
查看>>
BZOJ 1008 越狱
查看>>
linux中groupadd、groupmod、groupdel、newgrp命令
查看>>
Serializable 作用
查看>>
图片延迟 jquery lazyload.js
查看>>
P1333 瑞瑞的木棍 [并查集][欧拉路径]
查看>>
windows系统下,电脑存在文件无法删除,强制删除目录下所有文件
查看>>
SIT测试 和 UAT测试
查看>>
shell脚本从文件夹中递归提取文件
查看>>
VC最常用操作程序20项列举(转)
查看>>
Http幂等性
查看>>
[ ObjectListView ] - ListView的增强控件 - 前言 (翻译)
查看>>
使用两个栈实现队列
查看>>
ubuntu /etc/default/locale语言设置.
查看>>
最小生成树模板+并查集(隐藏)+结构体排序模板
查看>>