杭州淘策网站开发,我想找个人做网站,codepen wordpress,管理信息系统开发方法文章目录 题目链接解题思路解题代码 题目链接
189. 轮转数组
给定一个整数数组 nums#xff0c;将数组中的元素向右轮转 k 个位置#xff0c;其中 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] … 文章目录 题目链接解题思路解题代码 题目链接
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]
解题思路
数组翻转 1.初始化定义n(nums数组长度)、k(数组右转k次) 2.定义函数翻转函数传入参数nums数组、left、right当前left right 时 2(1).left所在nums数组索引的值赋值给tmp 2(2).right所在nums数组索引的值赋值给left所在nums数组索引的值, 2(3).tmp赋值给right所在nums数组索引的值 2(4).left的值1left的值-1 3.整体翻转 4.数组左边以索引0开始索引k-1结束 5.数组右边以索引k开始索引n-1结束
3.之前结束值及当前i的结束值取其最大值重新赋值给end 4.循环遍历结束将当前起始值及结束值保存至ret数组里
解题代码
class Solution:def rotate(self, nums: List[int], k: int) - None:n len(nums)k k % nself.reverse(nums, 0, n - 1)self.reverse(nums, 0, k - 1)self.reverse(nums, k, n - 1)def reverse(self, nums: List[int], left: int, right: int) - None:while left right:tmp nums[left]nums[left] nums[right]nums[right] tmpleft 1right - 1