当前位置: 首页 > news >正文

leetcode 轮转数组 189

题目

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

示例 2:
输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]

解释:
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rotate-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解思路

  • 使用额外的数组进行解决,这里关注一下 vecoter的assign的方法。
  • 使用数组翻转 ,先翻转整个数组,然后翻转前k个,再翻转后面的n-k个

代码

方法一

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

方法二

class Solution {
public:void reverse(vector<int>& nums,int start,int end){while(start<end){swap(nums[start++],nums[end--]);}}void rotate(vector<int>& nums, int k) {int n = nums.size();k = k%n;reverse(nums,0,n-1);reverse(nums,0,k-1);reverse(nums,k,n-1);}
};
http://www.lryc.cn/news/43801.html

相关文章:

  • Leetcode.1849 将字符串拆分为递减的连续值
  • Android布局层级过深为什么会对性能有影响?为什么Compose没有布局嵌套问题?
  • 【UR机械臂CB3 网络课程 】
  • dp-统计字典序元音字符串的数目
  • LFM雷达实现及USRP验证【章节3:连续雷达测距测速】
  • COLMAP多视角视图数据可视化
  • 2023年全国最新高校辅导员精选真题及答案36
  • ThreeJS-全屏和退出全屏、自适应大小(五)
  • 等级保护2.0要求及所需设备清单
  • 【大数据之Hadoop】六、HDFS之NameNode、Secondary NameNode和DataNode的内部工作原理
  • 小黑子—Java从入门到入土过程:第四章
  • 数据库原理及应用(四)——SQL语句(2)SQL基础查询以及常见运算符
  • (算法基础)Floyd算法
  • SQL语法:浅析select之七大子句
  • 中国人民大学与加拿大女王大学金融硕士——去有光的地方,并成为自己的光
  • Python数据结构与算法篇(五)-- 二分查找与二分答案
  • 小游戏也要讲信用
  • 贪心算法11
  • 【并发编程】JUC并发编程(彻底搞懂JUC)
  • Compose 动画 (七) : 高可定制性的动画 Animatable
  • vue3组件传值
  • 小白开发微信小程序00--文章目录
  • 随手记录第九话 -- Java框架整合篇
  • 电影《铃芽之旅》观后感
  • Web自动化测试(二)(全网最给力自动化教程)
  • 【C语言经典例题!】逆序字符串
  • 21 - 二叉树(三)
  • 【A-Star算法】【学习笔记】【附GitHub一个示例代码】
  • 纽扣电池澳大利亚认证的更新要求
  • 零代码零距离,明道云开放日北京站圆满结束