小工具知识网

当前位置: 首页 > 行业知识 > Leetcode 189. 轮转数组

行业知识

Leetcode 189. 轮转数组

2026-11-15 22:43:31 来源:互联网转载

���定一个整数数组 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]

“modify nums in-place instead”,指的是原位变化

实际上我们的变量都是一个对象,这个对象拥有两个基本属性——value和id,value就是变量里存储的值,id就是变量的实际存储的内存地址,根据这个内存地址我们就可以找到对应的变量数据,这就是关键所在了:原位修改指的是运行完毕后,nums的id地址不变,也就是说,一切会导致nums最后id改变的实现方式都是错误的,因为leetcode编译器会直接去读取原始的内存地址中存储的数据,如果你新建了nums变量,在新的id地址上实现了效果,但是很不幸,没用,因为原来id地址上的内容完全没改变,所以你的结果还是原来的模样,未曾改变半分,所以这也是很多人明明print(nums)看到了数据改变,但是编译器显示nums未曾改变的原因。

python:

class Solution:    def rotate(self, nums: List[int], k: int) -> None:        """        Do not return anything, modify nums in-place instead.        """        # 方法一        # for i in range(k):        #     nums.insert(0,nums.pop())        # 方法二        length=len(nums)        k%=length        # 原地赋值先将nums全部颠倒        nums[:]=nums[::-1]        # 将nums前k个倒转        nums[:k]=nums[:k][::-1]        # 将k后面倒转        nums[k:]=nums[k:][::-1]

上一篇:华为泰山服务器怎么打开?

下一篇:揭秘织梦CMS文章标题匹配技巧!