Leetcode每日一题:189.rotate-array(旋转数组)
思路:
方法一:每次移动1个元素,移动n次,时间复杂度O(n*k),空间复杂度O(1),会超时;
void rotate(vector<int> &nums, int k) {int len = nums.size();k %= n;for (int i = 0; i < k; i++) {int temp = nums[n - 1];for (int j = n - 1; j > 0; j--) {nums[j] = nums[j - 1];}nums[0] = temp;}}
方法二:翻转3次,比如1234567 k=3
翻转一次7654321
然后翻转前k个元素,得到5674321
,然后翻转后面len-k个元素,得到7654321
即可;
void fanzhuan(vector<int> &nums, int s, int e)
{int dist = 0;for (int i = s; i <= (s + e) / 2; i++){int temp = nums[i];nums[i] = nums[e - dist];nums[e - dist] = temp;dist++;}
}void rotate(vector<int> &nums, int k)
{int len = nums.size();if (len <= 1 || k == 0)return;if (k > len)k = k & len;fanzhuan(nums, 0, len - 1);fanzhuan(nums, 0, k - 1);fanzhuan(nums, k, len - 1);
}
Leetcode每日一题:189.rotate-array(旋转数组)相关推荐
- leetcode python3 简单题189. Rotate Array
1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百八十九题 (1)题目 英文: Given an array, rotate t ...
- leetcode Rotate Array 旋转数组
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- Leetcode每日一题:33.search-in-rotated-sorted-array(搜索旋转排序数组)
思路:利用vector变长特性,将前面旋转的部分移到后面,然后二分查找,O(logn)复杂度 int search(vector<int> &nums, int target) { ...
- rotate array 旋转数组
class Solution { public: void rotate(vector<int>& nums, int k) { int n=nums.size(); int i= ...
- 【算法天天练】Rotate Array 旋转数组
难度:中等 个人解题思路:把数组排在最后的值不断往数组头部拿,拿的次数是k次. var rotate = function(nums, k) {for(let i = 0 ; i<k ; i++ ...
- Leetcode每日一题:989.add-to-array-form-of-integer(数组形式的整数加法)
这道题还是要写一下 思路:首先想到的就是把数组转换成数字,直接相加,因为A的长度只有10000,但后来明显越界了,行不通:后来想到把K逐位加到A上,但很复杂,最终采用以下方法: vector<i ...
- Leetcode每日一题:1122.relative-sort-array(数组的相对排序)
思路:本题要求先按顺序放入arr2对应元素的前提下,再从小到大放入arr1中出现的其他元素:我们就可以先对arr1中的元素进行排序,因为只要有从小到大,肯定离不开排序,然后再优先放入arr2元素,同时 ...
- Leetcode每日一题:977.squares-of-a-sorted-array(有序数组的平方)
思路:先找到里面绝对值最小的元素,然后双指针,一个指左边,一个指右边,比较两指针指向的当前元素,哪个小放哪个哪边指针指向下一个元素:最后把剩余没放进的一侧全部放入: vector<int> ...
- Leetcode每日一题:108.convert-sorted-array-to-binary-search-tree(有序数组转成BST)
思路:避开树的中序遍历等,这道题可以使用普通的解法,每次从中间开始递归连接相应结点 class Solution {public:TreeNode* sortedArrayToBST(vector&l ...
- Leetcode每日一题:26.remove-duplicates-from-sorted-array(删除排序数组中的重复项)
正常思维:依次遍历到尾,期间把经过的元素(不重复的 and 重复出现只取一个)依次push_back到vector里 然后把前面的全删除即可: 简洁版:因为题目说了不考虑超出新长度后的元素,所以一个f ...
最新文章
- menu.php,menu.php
- kohana中的路由规则
- C++类的组合和前向引用
- 宝塔面板怎么下载php,宝塔面板下怎么安装Mosquitto-php扩展
- Python基础学习,面向对象的基本概念
- 基于《悉尼协议》框架下Java课程案例教学研究
- Centos7.3 坑爹网络配置
- Web API 源码剖析之默认消息处理程序链之路由分发器(HttpRoutingDispatcher)
- 项目导入mysql驱动包---简单例子
- C语言-英文字母倒序转换
- Windows配置环境变量
- 超过100w条数据表的分页查询优化
- 抖音提示原创度低,这会导致封号么?给你几点建议
- 保护眼睛的好方法-适合上班族经常面对电脑的GGMM
- 异构数据源之间交换数据的工具
- 从ElasticSearch 认识到实战(SpringBoot集成ES)
- J2SE和J2EE的比较
- 债券逆回购 上海深圳市场 操作指南
- 电信卡流量套餐超40G后,该如何解除网速限制?
- UVA - 1533 Moving Pegs
热门文章
- root用户安装的软件在普通用户不生效
- 关于项目中的封装、重构
- 移动游戏开发图书推荐
- [转]Python3之max key参数学习记录
- 正则表达式去除括号的问题
- Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
- php+高德地图webapi 高德jsapi 实现 当前位置与目标位置距离 并按照距离排序(坐标逆转换)...
- Mybatis笔记 – Po映射类型
- C语言复杂声明解读简明方法
- [告知]在评论中发布广告者必删!