思路:
方法一:每次移动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(旋转数组)相关推荐

  1. leetcode python3 简单题189. Rotate Array

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百八十九题 (1)题目 英文: Given an array, rotate t ...

  2. 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 ...

  3. Leetcode每日一题:33.search-in-rotated-sorted-array(搜索旋转排序数组)

    思路:利用vector变长特性,将前面旋转的部分移到后面,然后二分查找,O(logn)复杂度 int search(vector<int> &nums, int target) { ...

  4. rotate array 旋转数组

    class Solution { public: void rotate(vector<int>& nums, int k) { int n=nums.size(); int i= ...

  5. 【算法天天练】Rotate Array 旋转数组

    难度:中等 个人解题思路:把数组排在最后的值不断往数组头部拿,拿的次数是k次. var rotate = function(nums, k) {for(let i = 0 ; i<k ; i++ ...

  6. Leetcode每日一题:989.add-to-array-form-of-integer(数组形式的整数加法)

    这道题还是要写一下 思路:首先想到的就是把数组转换成数字,直接相加,因为A的长度只有10000,但后来明显越界了,行不通:后来想到把K逐位加到A上,但很复杂,最终采用以下方法: vector<i ...

  7. Leetcode每日一题:1122.relative-sort-array(数组的相对排序)

    思路:本题要求先按顺序放入arr2对应元素的前提下,再从小到大放入arr1中出现的其他元素:我们就可以先对arr1中的元素进行排序,因为只要有从小到大,肯定离不开排序,然后再优先放入arr2元素,同时 ...

  8. Leetcode每日一题:977.squares-of-a-sorted-array(有序数组的平方)

    思路:先找到里面绝对值最小的元素,然后双指针,一个指左边,一个指右边,比较两指针指向的当前元素,哪个小放哪个哪边指针指向下一个元素:最后把剩余没放进的一侧全部放入: vector<int> ...

  9. Leetcode每日一题:108.convert-sorted-array-to-binary-search-tree(有序数组转成BST)

    思路:避开树的中序遍历等,这道题可以使用普通的解法,每次从中间开始递归连接相应结点 class Solution {public:TreeNode* sortedArrayToBST(vector&l ...

  10. Leetcode每日一题:26.remove-duplicates-from-sorted-array(删除排序数组中的重复项)

    正常思维:依次遍历到尾,期间把经过的元素(不重复的 and 重复出现只取一个)依次push_back到vector里 然后把前面的全删除即可: 简洁版:因为题目说了不考虑超出新长度后的元素,所以一个f ...

最新文章

  1. menu.php,menu.php
  2. kohana中的路由规则
  3. C++类的组合和前向引用
  4. 宝塔面板怎么下载php,宝塔面板下怎么安装Mosquitto-php扩展
  5. Python基础学习,面向对象的基本概念
  6. 基于《悉尼协议》框架下Java课程案例教学研究
  7. Centos7.3 坑爹网络配置
  8. Web API 源码剖析之默认消息处理程序链之路由分发器(HttpRoutingDispatcher)
  9. 项目导入mysql驱动包---简单例子
  10. C语言-英文字母倒序转换
  11. Windows配置环境变量
  12. 超过100w条数据表的分页查询优化
  13. 抖音提示原创度低,这会导致封号么?给你几点建议
  14. 保护眼睛的好方法-适合上班族经常面对电脑的GGMM
  15. 异构数据源之间交换数据的工具
  16. 从ElasticSearch 认识到实战(SpringBoot集成ES)
  17. J2SE和J2EE的比较
  18. 债券逆回购 上海深圳市场 操作指南
  19. 电信卡流量套餐超40G后,该如何解除网速限制?
  20. UVA - 1533 Moving Pegs

热门文章

  1. root用户安装的软件在普通用户不生效
  2. 关于项目中的封装、重构
  3. 移动游戏开发图书推荐
  4. [转]Python3之max key参数学习记录
  5. 正则表达式去除括号的问题
  6. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
  7. php+高德地图webapi 高德jsapi 实现 当前位置与目标位置距离 并按照距离排序(坐标逆转换)...
  8. Mybatis笔记 – Po映射类型
  9. C语言复杂声明解读简明方法
  10. [告知]在评论中发布广告者必删!