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

[leetcode刷题]面试经典150题之6轮转数字(简单)

题目 

​​​​​​轮转数组

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

思路

  • 创建辅助数组

    • 你创建了一个长度和 nums 一样的辅助数组 n,用来存储轮转后的结果。
    • n = [0] * len(nums) 初始化一个全为 0 的新数组 n
  • 处理 k

    • 如果 k 大于数组长度 len(nums),你用 k = k % len(n) 来处理,避免轮转次数超出数组长度。这一步是必要的,因为轮转 len(nums) 次后数组会回到原始状态。
  • 将最后 k 个元素放到辅助数组的开头

    • 通过 n[i] = nums[len(nums) - k + i],你把 nums 中从倒数第 k 个开始的元素存放到辅助数组的前 k 个位置。
  • 将剩余的元素移动到辅助数组的后面

    • 接下来,通过 n[i] = nums[i - k],你把数组剩余的元素移动到辅助数组中。
  • 将辅助数组拷贝回原数组

    • 最后,你通过 nums[i] = n[i] 将辅助数组 n 的值拷贝回 nums 中,完成数组的轮转。

代码

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        n=[0]*len(nums)
        if k>len(n):
            k=k%len(n)
        for i in range(k):
            n[i]=nums[len(nums)-k+i]
        for i in range(k,len(nums)):
            n[i]=nums[i-k]
        for i in range(len(n)):
            nums[i]=n[i]


http://www.kler.cn/news/317067.html

相关文章:

  • k8s上安装prometheus
  • 字母与符号检测系统源码分享
  • ubuntu、linux安装redis(使用tar包的方式)
  • 前端——实现时钟 附带小例子
  • 数据结构:线性表
  • 2024从传统到智能,AI做PPT软件的崛起之路
  • 【文心智能体】 旅游手绘手帐 开发分享 零代码 手绘风景 记录行程和心情 旅游攻略
  • 鹏哥C语言49---第5次作业:选择语句 if 和 switch
  • 脚本注入网页:XSS
  • springboot中的异步任务
  • Matplotlib-数据可视化详解
  • 瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商
  • git show 命令
  • Unity中Rigidbody 刚体组件和Rigidbody类是什么?
  • 【flex-shrink】计算 flex弹性盒子的子元素的宽度大小
  • 【27】C++项目练习
  • 循环中用sleep
  • linux atomic 原子变量操作
  • 【Python报错已解决】AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘
  • 生成式AI:ChatGPT及其在各行业的应用前景
  • git学习报告
  • 深入探索迭代器模式的原理与应用
  • 从零开始写一个建立FAT32文件系统程序
  • MFC - 复杂控件_2
  • 【安装教程】Windows环境下Apache Jena Fuseki的安装与配置
  • qt-C++笔记之作用等同的宏和关键字
  • 模拟电路工程师面试题
  • 如何解决npm下载Puppeteer卡死的问题
  • YOLOv9改进策略【注意力机制篇】| 2024 SCI TOP FCAttention 即插即用注意力模块,增强局部和全局特征信息交互
  • Java面试指南(基础篇)