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]

“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]

相关推荐

  1. Leetcode 189. 轮转数组

    2024-03-12 01:46:02       44 阅读
  2. Leetcode-189.轮转数组

    2024-03-12 01:46:02       38 阅读
  3. [leetcode] 189. 轮转数组

    2024-03-12 01:46:02       43 阅读
  4. Leetcode 189. 轮转数组

    2024-03-12 01:46:02       34 阅读
  5. leetcode-189 轮转数组

    2024-03-12 01:46:02       27 阅读
  6. LeetCode 189.轮转数组

    2024-03-12 01:46:02       39 阅读
  7. LeetCode刷题记录】189. 轮转数组

    2024-03-12 01:46:02       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 01:46:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 01:46:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 01:46:02       82 阅读
  4. Python语言-面向对象

    2024-03-12 01:46:02       91 阅读

热门阅读

  1. C++split的替代方法

    2024-03-12 01:46:02       46 阅读
  2. Go语言中,如何调用C++的dll文件

    2024-03-12 01:46:02       47 阅读
  3. Python中输入输出函数input和print用法

    2024-03-12 01:46:02       39 阅读
  4. 【Spring Boot单元测试】讲解

    2024-03-12 01:46:02       44 阅读