问题:把一个N个元素的数组循环右移K位,要求时间复杂度为O(N)。

解析:如abcd1234右移4位 要变成1234abcd

1,逆序排列abcd->dcba1234

2,逆序排列1234->dcba4321

3,逆序排列dcba4321

代码如下:

void Reverse(int * arr, int beg, int end)
{for (; beg < end ; beg++, end—){int temp = arr[beg];arr[beg] = arr[end];arr[end] = temp;}
}
void RightSift(int* arr, int N, int K)
{K = K%N;//这里一定要注意,K不一定是小于N的,如果K大于N呢?呵呵Reverse(arr, 0, N – K -1);Reverse(arr, N – K , N -1);Reverse(arr, 0, N - 1);
}

转载于:https://www.cnblogs.com/cluster/archive/2011/06/12/2078963.html

Programe_Of_Beauty:2.17 数组循环位移相关推荐

  1. 编程之美2.17 数组循环移位

    问题描述: 设计一个算法,把一个含有N元素的数组循环左移或者右移K位. 解决方法: 1. 暴力解法------O(KN) 2. 颠倒位置------O(N) 具体思路和代码: 1. 暴力解法----- ...

  2. 编程之美2.17 数组循环移位

    这是一个很经典的题目,题目的大概意思是这样的:       有一个存储字符串的数组,需要按照要求循环移动数组中的字符,例如,数组中存储字符 abcd1234,循环右移4位,之后,会得到这样一个字符数组 ...

  3. Swift - 17 - 数组的初始化

    import UIKit// 声明数组 var array = ["A", "B", "C", "D", "E ...

  4. javascript学习系列(17):数组中的find方法

    最好的种树是十年前,其次是现在.歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主  放弃很容易但是坚持一定很酷     我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的 ...

  5. JavaScript —— JSchallenger Arrays 数组练习(测试一下你的 JS 数组基础)【专题二】

    文章目录 二.JavaScript 数组练习 1. 返回数组 a 的第 n 个元素 2. 删除数组 a 的前三个元素,并返回结果 3. 提取数组 a 的后三个元素,并返回结果 4. 提取数组 a 的前 ...

  6. clickhouse 常用函数 算数函数 时间函数 日期函数 字符串函数 比较函数 数据类型函数 逻辑函数 类型转换函数 替换函数 数组函数 随机函数 编码函数 UUID URL IP 函数

    clickhouse 常用函数 算数函数 时间函数 日期函数 字符串函数 比较函数 数据类型函数 逻辑函数 类型转换函数 替换函数 数组函数 随机函数 编码函数 UUID URL IP 函数 算数函数 ...

  7. C/C++刷题知识点总结

    纠正一些知识性偏见.欠缺: 变量占用内存大小,是用sizeof()计算出来那个,定义字符型数据时后面不添加'\0'的,但是在字符串数组后面是添加的:例如char a[]={'a','b','c'};` ...

  8. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  9. php get 传循环出来的参数_PHP性能优化小技巧

    PHP性能优化小技巧: 1. foreach效率更高,尽量用foreach代替while和for循环. 2. 循环内部不要声明变量,尤其是对象这样的变量. 3. 在多重嵌套循环中,如有可能,应当将最长 ...

  10. 编码练习——Java-3-数组

    创建与输出数组 数组 - 实例 - 求一位数组各元素的和 public class Test {public static void main(String[] args) {int[] num = ...

最新文章

  1. vasp安装包_【问题集锦】VASPamp;MedeA 第十一期
  2. sybase笔记 2762错误
  3. DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)
  4. Python数据结构学习笔记——栈
  5. asp.net通用用户初始化类,登录后初始化,随时随地可以应用
  6. mysql error 变量_mysql 变量问题
  7. java文件读写操作类
  8. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)
  9. CSAPP:第八章 异常控制流1
  10. css 右上角 翻开动画_css制作电闪雷鸣的天气图标
  11. MySql中 DELIMITER
  12. 【Music】Never took the time
  13. css两列等高,实现一个两列等高布局,讲讲思路
  14. QTTabBar功能是灰色,无法启用的解决办法
  15. 试用了5款BI分析工具,终于找到了上手最快的那一个!
  16. 男神女神投票源码 v5.5.21 投票源码
  17. 【游戏测试】bug优先级的定义及如何描述
  18. UE4学习笔记——粒子发射器
  19. 必备知识---TCP三次握手和四次挥手以及SSL四次握手
  20. 什么是smarty及其安装

热门文章

  1. JQ6500语音模块
  2. 第九章 DirectX 输入和声音(下)
  3. 工单管理软件,免费工单管理系统
  4. 岭回归,Lasso回归和弹性网回归理论及特点
  5. java实现控制台表格
  6. 哈理工c语言,哈理工C语言试题.doc
  7. android手机接投影仪,只需一招, 手机也能连接投影仪!
  8. matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two
  9. python文本文件合并,python将多个文本文件合并为一个文本的代码(便于搜索)
  10. bracktrack5r3安装+bt5r3下安装vmwaretools