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

【hot100】刷题记录(6)-轮转数组

题目描述:

给定一个整数数组 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 <= nums.length <= 105
  • -231 <= nums[i] <= 231 - 1
  • 0 <= k <= 105

 

我的作答:

切片,再替换

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        if not nums: return []
        if k>len(nums):
            k = k%len(nums) #因为轮转是周期性的
        left = nums[len(nums)-k:len(nums)]
        right = nums[0:len(nums)-k]
        nums[:] = left+right
        return nums

 

参考:

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        def reverse(i, j):
            while i < j:
                nums[i], nums[j] = nums[j], nums[i]
                i += 1
                j -= 1

        n = len(nums)
        k %= n  # 轮转 k 次等于轮转 k%n 次
        reverse(0, n - 1)
        reverse(0, k - 1)
        reverse(k, n - 1)

 


http://www.kler.cn/a/524840.html

相关文章:

  • 【单细胞第二节:单细胞示例数据分析-GSE218208】
  • 用HTML、CSS和JavaScript实现庆祝2025蛇年大吉(附源码)
  • 128周二复盘(164)学习任天堂
  • 论文阅读(二):理解概率图模型的两个要点:关于推理和学习的知识
  • ZZNUOJ(C/C++)基础练习1011——1020(详解版)
  • K8S 快速实战
  • [ASR]faster-whisper报错Could not locate cudnn_ops64_9.dll
  • AI编译器之——为什么大模型需要Relax?
  • 房屋租赁系统如何借助智能化手段提升管理效率与租客体验
  • 剑指 Offer II 008. 和大于等于 target 的最短子数组
  • 【2024年华为OD机试】(A卷,200分)- 查找树中元素 (JavaScriptJava PythonC/C++)
  • 10.3 LangChain实战指南:解锁大模型应用的10大核心场景与架构设计
  • 【C语言练习题】计算16位二进制数所表示的有符号整数
  • 万物皆有联系:驼鸟和布什
  • Github 2025-01-29 C开源项目日报 Top10
  • TPA注意力机制详解及代码复现
  • Linux pkill 命令使用详解
  • 【redis进阶】分布式锁
  • LitServe - 闪电般快速服务AI模型⚡
  • FreeRTOS学习 --- 动态任务创建和删除的详细过程
  • 解码,蓝桥杯2020G
  • RedisTemplate和Redisson的使用和区别
  • 性能测试丨分布式性能监控系统 SkyWalking
  • 求职|基于Springboot的校园求职招聘系统设计与实现(源码+数据库+文档)
  • 【linux】linux缺少tar命令/-bash: tar:未找到命令
  • 单片机基础模块学习——NE555芯片