第一中方法即为hash的方法:

第二种采用了循环,但是不全面,输入测试用例为[1,3], k=3 时,无法进行交换:

class Solution {
public:void rotate(vector<int>& nums, int k) {int len=nums.size();int round=1;if(k==0)return;for(;round<(len/k);round++){for(int i=len-round*k; i<len-(round-1)*k; i++){int tmp = nums[i];  //swapnums[i]=nums[i-k];nums[i-k] = tmp;}}//end of swap, start bubbleint i=len-(round*k)-1;for(;i>=0;i--){int index=i;for(int j=len-round*k;j<len-(round-1)*k;j++){int tmp=nums[index];   //swapnums[index]=nums[j];nums[j]=tmp;index=j;}}     }
};

第三种,采用额外的数组

class Solution {
public:void rotate(vector<int>& nums, int k) {std::map<int,int> new_nums;int new_index=0;int len=nums.size();for(int i=0;i<len;i++){new_index = (i+k)%len;new_nums.insert(pair<int,int>(new_index,nums[i]));}for(int i=0;i<len;i++){std::map<int,int>::iterator iter;iter = new_nums.find(i);nums[i]=iter->second;}  }
};

这个代码通过了测试,但是因为进行了两次循环且使用了额外的空间,显示结果为:

leetcode练习旋转数组相关推荐

  1. 刷爆LeetCode之旋转数组

    旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6,7]和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右 ...

  2. LeetCode 初级 - 旋转数组

    旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向 ...

  3. leetcode初级———旋转数组的多种算法总结

    题目描述: 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数. (来源:leetcode) 1.数组拆分 //经观察发现:将数组元素全部后移k单位即将后 k%length 个元素前 ...

  4. LeetCode 189. 旋转数组(环形替换)

    1. 题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向 ...

  5. Leetcode 189. 旋转数组 解题思路及C++实现

    方法一:暴力方法 解题思路: 用栈存储后面的 k 个元素,然后将 nums 数组的元素往后挪 k 位,然后再将栈中的元素存进nums数组中. class Solution { public:void ...

  6. Leetcode 189. 旋转数组 (每日一题 20210909)

    给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数.进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问 ...

  7. leetcode(189) 旋转数组

    **给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 你可以使用空间复杂度为 O(1) 的 原地 算法解 ...

  8. leetcode 189. 旋转数组

    题目 思路 先左边翻转,再右边翻转,最后整体翻转. 注意存在翻转超过一个周期的情况,要先取余,避免越界. 题解 class Solution {public void rotate(int[] num ...

  9. LeetCode 1238. 循环码排列(格雷编码+旋转数组)

    1. 题目 给你两个整数 n 和 start.你的任务是返回任意 (0,1,2,,...,2^n-1) 的排列 p,并且满足: p[0] = start p[i] 和 p[i+1] 的二进制表示形式只 ...

最新文章

  1. 自制操作系统学习笔记(2)-汇编程序体验
  2. 与数学实验第二版艾冬梅_吉林省实验繁荣新初一师资大起底,快来看看娃的老师长啥样?...
  3. 51nod1325-两棵树的问题【最大权闭合图,网络流】
  4. WPF编程学习 —— 样式
  5. 就在这段时间让自己充实起来
  6. docker 部署 zookeeper+kafka 集群
  7. java正则表达式 提取 host_使用正则表达式获取链接的Host
  8. Robot Framework(十四):使用RF进行接口测试(上)
  9. 大数据资料全解析(352个案例+大数据交易白皮书+国内外政策汇篇)
  10. harmonyos2.0是什么,HarmonyOS 2.0 Beta是什么?HarmonyOS 2.0 简介
  11. 博奥智源科技浅谈医院采购合理用药系统功能详细设计
  12. 商品房销售价格指数中的同比,环比,定基
  13. 病毒分析之撒旦(Satan)勒索病毒分析解密(AES256 ECB算法)
  14. 什么是CDN,内容分发网络学习
  15. 一段顺序颠倒能读通的文字_专家解释汉字顺序不影响阅读--人脑自动排序
  16. java计算机毕业设计消防应急管理系统源码+lw文档+系统+数据库
  17. 浅谈网络编程中的常见问题
  18. 通过修改电源选项,提高cpu使用效率。
  19. 万字肝货 | 超全总结,Linux常用磁盘命令、文件命令!
  20. OCR助手-免费OCR工具

热门文章

  1. 吴恩达神经网络和深度学习-学习笔记-18-Softmax回归
  2. 吴恩达神经网络和深度学习-学习笔记-12-RMSprop算法
  3. [Python] 字典 items()方法:同时对字典的键和值进行遍历
  4. python绘制一棵樱花树
  5. 浅谈sql之连接查询
  6. poj3280 Cheapest Palindrome(回文串区间dp)
  7. 面向对象3-析构函数和私有属性
  8. jquery mobile将页面内容当成弹框进行显示
  9. [独孤九剑]持续集成实践(二)– MSBuild语法入门
  10. ASP.NET 将Excel导入数据库