189.旋转数组(将数组元素循环右移k次)

题目:
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

1. 每次只将最后一个元素右移至数组头部位置,重复k%nums.length次即可

public void rotate(int[] nums, int k) {if(nums.length<2) return;for(int i=0;i<k;i++){int target = nums[nums.length-1];for(int j=nums.length-2;j>=0;j--){nums[j+1] = nums[j];}nums[0] = target;}}

2. 使用辅助数组。
可以使用额外的数组来将每个元素放至正确的位置。用 n表示数组的长度,我们遍历原数组,将原数组下标为 i的元素放至新数组下标为(i+k) mod n 的位置,最后将新数组拷贝至原数组即可。

public:void rotate(vector<int>& nums, int k) {int n = nums.size();vector<int> newArr(n);for (int i = 0; i < n; ++i) {newArr[(i + k) % n] = nums[i];}nums.assign(newArr.begin(), newArr.end());}

3.数组翻转。

  • 当我们将数组的元素向右移动 k次后,尾部 k%n 个元素会移动至数组头部,其余元素向后移动 k%n 个位置。
  • 该方法为数组的翻转:我们可以先将所有元素翻转,这样尾部的k%n个元素就被移至数组头部,然后我们再翻转 [0, (k%n)-1] 区间的元素和 [k%n, n-1]区间的元素即能得到最后的答案。
 public void rotate(int[] nums, int k) {k %= nums.length;reverse(nums,0,nums.length-1);reverse(nums, 0, k-1);reverse(nums,k,nums.length-1);}public void reverse(int[] nums,int start,int end){while(start<end){int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}  }

2,3来自https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode-solution-nipk/

旋转数组(将数组元素循环右移k次)相关推荐

  1. java 数组元素依次右移,将数组元素循环右移k个位置(Java实现)

    用四种方法实现了将数组元素循环右移k个位置,相关的解释作为注释放在代码里面了. package movearrayelement; import java.util.BitSet; public cl ...

  2. c语言将数组元素循环右移k位,把一个含有N个元素的数组循环右移K位

    普通解法: 可以每次将数组中的元素右移一位,循环K次.每个元素右移N位后都会回到自己的位置上.因此,如果K > N,右移K-N之后的数组序列跟右移K位的结果是一样的.进而可得出一条通用的规律:右 ...

  3. c++string转char数组_C++ 算法题解:打印沙漏、素数对猜想、数组元素循环右移问题...

    作者:鲸90830  链接:https://www.cnblogs.com/whale90830/p/10688802.html DS_起步自测 中国大学MOOC_陈越.何钦铭_数据结构_起步能力自测 ...

  4. PAT (Basic Level) Practice1008 数组元素循环右移问题

    1008 数组元素循环右移问题 一.题目 一个数组A中存有N(>0)N(>0)N(>0)个整数,在不允许使用另外数组的前 提下,将每个整数循环向右移M(≥0)M(≥0)M(≥0)个位 ...

  5. PATB 1008 数组元素循环右移问题

    1008 数组元素循环右移问题 (20 分) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--A ...

  6. 7-1 数组元素循环右移问题 (20 分)

    7-1 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A​1 ⋯A​N−1​​ ...

  7. C++学习之路 | PTA乙级—— 1008 数组元素循环右移问题 (20分)(精简)

    1008 数组元素循环右移问题 (20分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A ​0 ​​ A ​1 ​​ ...

  8. 浙江大学PAT上机题解析之1008. 数组元素循环右移问题 (20)

    1008. 数组元素循环右移问题 (20) 时间限制  400 ms 内存限制  32000 kB 代码长度限制  8000 B 判题程序    Standard 一个数组A中存有N(N>0)个 ...

  9. 7-2 数组元素循环右移问题 (40 分)

    ** 7-2 数组元素循环右移问题 (40 分) ** 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A 0 A 1 ⋯ ...

最新文章

  1. 这个云代驾,你打几分
  2. [jvm]对象访问机制
  3. PADS 9.3安装教程
  4. 郑州商品交易所与阿里云达成合作,推进核心数据分析平台建设
  5. 总算解决了路由器上iptables的nat问题
  6. php defunct,通过swoole观察僵尸进程和孤儿进程出现和消亡
  7. CSS布局说——可能是最全的
  8. Git 版本对比 idea图形化版本
  9. 神经网络densecnn_对比学习用 Keras 搭建 CNN RNN 等常用神经网络
  10. python表单防重复提交_关于PHP使用token防止表单重复提交的方法
  11. 开发sharepoint工作流过程中的Ptifall(容易犯的错误)
  12. IPv4和IPv6有什么不同
  13. 关于makefile的使用
  14. 一个纸水杯的测试用例设计。
  15. OJ 2306 Problem C Banana
  16. 计算机电源简单知识,基本知识:电脑电源工作流程以及电路图赏析
  17. n维椭球体积公式_物质的量浓度计算公式都有什么?
  18. 微信开放平台绑定各移动应用、网站应用、公众号、小程序、第三方的个数
  19. 我的Java学习感悟
  20. 渲染用计算机功耗,用了功率计,才发现原来电脑功耗其实并不大,买大功率电源是否浪费?...

热门文章

  1. git 撤销刚才的rebase_撤消git pull –rebase
  2. 如何利用科技获取超过行业 15% 的利润率?
  3. Java (JDK和JRE安装)简单粗暴
  4. 滴滴开源跨平台统一 MVVM 框架 Chameleon
  5. 如何通过Tushare获得A股历史股价数据
  6. Bowtie 2使用
  7. 通过电子邮件发送简历
  8. 兼职,副业的另一种思路分享:想在网上赚钱应该从哪里开始?
  9. 零基础CSS入门教程(18)–颜色值
  10. 重庆信息学院“感恩母亲,回报母爱”活动举行