leetcode练习旋转数组
第一中方法即为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练习旋转数组相关推荐
- 刷爆LeetCode之旋转数组
旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6,7]和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右 ...
- LeetCode 初级 - 旋转数组
旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向 ...
- leetcode初级———旋转数组的多种算法总结
题目描述: 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数. (来源:leetcode) 1.数组拆分 //经观察发现:将数组元素全部后移k单位即将后 k%length 个元素前 ...
- LeetCode 189. 旋转数组(环形替换)
1. 题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向 ...
- Leetcode 189. 旋转数组 解题思路及C++实现
方法一:暴力方法 解题思路: 用栈存储后面的 k 个元素,然后将 nums 数组的元素往后挪 k 位,然后再将栈中的元素存进nums数组中. class Solution { public:void ...
- Leetcode 189. 旋转数组 (每日一题 20210909)
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数.进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问 ...
- leetcode(189) 旋转数组
**给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 你可以使用空间复杂度为 O(1) 的 原地 算法解 ...
- leetcode 189. 旋转数组
题目 思路 先左边翻转,再右边翻转,最后整体翻转. 注意存在翻转超过一个周期的情况,要先取余,避免越界. 题解 class Solution {public void rotate(int[] num ...
- LeetCode 1238. 循环码排列(格雷编码+旋转数组)
1. 题目 给你两个整数 n 和 start.你的任务是返回任意 (0,1,2,,...,2^n-1) 的排列 p,并且满足: p[0] = start p[i] 和 p[i+1] 的二进制表示形式只 ...
最新文章
- 自制操作系统学习笔记(2)-汇编程序体验
- 与数学实验第二版艾冬梅_吉林省实验繁荣新初一师资大起底,快来看看娃的老师长啥样?...
- 51nod1325-两棵树的问题【最大权闭合图,网络流】
- WPF编程学习 —— 样式
- 就在这段时间让自己充实起来
- docker 部署 zookeeper+kafka 集群
- java正则表达式 提取 host_使用正则表达式获取链接的Host
- Robot Framework(十四):使用RF进行接口测试(上)
- 大数据资料全解析(352个案例+大数据交易白皮书+国内外政策汇篇)
- harmonyos2.0是什么,HarmonyOS 2.0 Beta是什么?HarmonyOS 2.0 简介
- 博奥智源科技浅谈医院采购合理用药系统功能详细设计
- 商品房销售价格指数中的同比,环比,定基
- 病毒分析之撒旦(Satan)勒索病毒分析解密(AES256 ECB算法)
- 什么是CDN,内容分发网络学习
- 一段顺序颠倒能读通的文字_专家解释汉字顺序不影响阅读--人脑自动排序
- java计算机毕业设计消防应急管理系统源码+lw文档+系统+数据库
- 浅谈网络编程中的常见问题
- 通过修改电源选项,提高cpu使用效率。
- 万字肝货 | 超全总结,Linux常用磁盘命令、文件命令!
- OCR助手-免费OCR工具