LeetCode 189. Rotate Array 解题思路和python代码

news2024/10/7 7:18:54

题目
Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.

Example 1:

Input: nums = [1,2,3,4,5,6,7], k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]
Example 2:

Input: nums = [-1,-100,3,99], k = 2
Output: [3,99,-1,-100]
Explanation:
rotate 1 steps to the right: [99,-1,-100,3]
rotate 2 steps to the right: [3,99,-1,-100]

Constraints:

1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105

Follow up:

Try to come up with as many solutions as you can. There are at least three different ways to solve this problem.
Could you do it in-place with O(1) extra space?

解题思路
题目要求将array向右rotate k步。
我们的思路是先将整个array进行reverse,再将前k个进行reverse,最后将剩余的进行reverse。

例如,nums = [1, 2, 3, 4, 5, 6, 7]和k = 3。
reverse整个array,[7, 6, 5, 4, 3, 2, 1]。
reverse前3个elements,[5, 6, 7, 4, 3, 2, 1]。
reverse剩余的elements,[5, 6, 7, 1, 2, 3, 4]。

space complexity等于O(1)。

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.
        """
        n = len(nums)
        k = k%n

		# Helper function to reverse elements in the array from index 'start' to 'end'
        def reverse(start, end):
            while start < end:
                nums[start], nums[end] = nums[end], nums[start]
                start += 1
                end -= 1

        reverse(0, n-1)

        reverse(0, k-1)

        reverse(k, n-1)

        return nums

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hackmyvm-BaseME靶机

主机发现 sudo arp-scan -l 扫描到本地网络靶机ip:192.168.91.173 nmap扫描 sudo nmap 192.168.91.173 发现靶机开放22端口的ssh服务与80端口的http服务 base64加密 我们访问一下80端口&#xff0c;发现了一串加密信息&#xff0c;判读大概是base64加密 base64加密特征&…

软件无线电4-位同步

在数字通信系统中&#xff0c;同步主要有三种方式&#xff0c;载波同步、位同步和群同步。载波同步指在相干解调时&#xff0c;接收机的解调器需要产生一个与调制载波同频同相的相干载波。载波同步又称为载波恢复。位同步指接收机需要产生一个与调制信号符号速率相同&#xff0…

【stm32】ADC的介绍与使用

ADC的介绍与使用 1、ADC介绍2、逐次逼近型ADC3、ADC电路4、ADC基本结构程序代码编写&#xff1a;ADC 通道和引脚复用的关系 5、转换模式&#xff08;1&#xff09;单次转换&#xff0c;非扫描模式转换流程&#xff1a;程序编写&#xff1a; &#xff08;2&#xff09;连续转换&…

Android一个APP里面最少有几个线程

Android一个APP里面最少有几个线程 参考 https://www.jianshu.com/p/92bff8d6282f https://www.jianshu.com/p/8a820d93c6aa 线程查看 Android一个进程里面最少包含5个线程&#xff0c;分别为&#xff1a; main线程(主线程&#xff09;FinalizerDaemon线程 终结者守护线程…

pg 视图

1.概念 2.创建 3.修改 3.删除 4.递归

【量子计算】开辟全新计算范式

1. &#x1f680; 引言1.1 &#x1f680; 量子计算的现状与发展趋势1.2 &#x1f4dc; 量子位、量子门和量子电路的基本概念1.3 &#x1f3c6; 量子计算在科学研究中的作用 2. &#x1f50d; 量子计算的演变与创新2.1 &#x1f31f; 量子计算的发展历程2.2 &#x1f9e0; 量子算…

Dit架构 diffusion范式分类+应用

1.ping 网址 2.ssh nscc/l20 3.crtl,打开vscode的setting 4.win 10修改ssh配置文件及其密钥权限为600 - 晴云孤魂 - 博客园 整体来看&#xff1a; 使用transformer作为其主干网络&#xff0c;代替了原先的UNet 在latent space进行训练&#xff0c;通过transformer处理潜…

Leetcode——数组:二分搜索法704.二分查找相似题目

知识点&#xff1a; 二分搜索的区间&#xff0c;一般分为左闭右闭或左闭右开 left0 易错点1 while(易错点2) {middle(leftright)/2if(nums[middle]>target){right易错点3}else if(nums[middle]<target){leftmiddle1}else if(nums[middle]target){return target} } retu…

NRF52832

当我下载完NRF的芯片包后出现了一个缺失pack的问题 解决方法&#xff1a; CMSIS缺失警告_error #541: arm::cmsis:core:4.3.0 component is m-CSDN博客 引入新的型号的芯片问题总结&#xff1a; 一般引入新的型号的芯片都会涉及到.pack和芯片包的问题 外设调用&#xff1a; …

论文阅读:LLaVA-OneVision: Easy Visual Task Transfer

论文地址&#xff1a;https://arxiv.org/pdf/2408.03326 公开时间&#xff1a;2024年9月14日 项目地址&#xff1a;https://llava-vl.github.io/blog/llava-onevision LLaVA-OneVision是一个开放的大型多模态模型&#xff08;LMMs&#xff09;&#xff0c;它是通过整合在LLaVA…

【星闪开发连载】SLE_UUID_Server和SLE_UUID_Client程序分析

引言 星闪测试已经搁置了很久了&#xff0c;主要是8-9月份太忙了。今天重新捡回来。想看看官方提供的星闪例子&#xff0c;在application\samples\bt\sle\sle_uuid_client\和sle_uuid_server目录。这两个例子是一对&#xff0c;一个用来广播服务&#xff0c;另一个去连接。对应…

Mybatis-plus的基础用法

文章目录 1. 核心功能1.1 配置与编写规则1.2 条件构造器1.3 自定义SQL1.4 IService接口1.4.1 Lambda方法1.4.2 批量新增 1.5 分页查询 2. 拓展功能2.1 代码生成器2.2 DB静态工具2.3 逻辑删除2.4 枚举处理器 参考 1. 核心功能 1.1 配置与编写规则 Maven依赖&#xff1a; <…

Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件

文章目录 前言EcuMCommonConfigurationEcuMDriverInitListOneEcuMModuleIDEcuMModuleParameterEcuMModuleServiceEcuMRbDriverInitCoreIdEcuMDriverInitListZeroEcuMGeneralEcuMRbOnGoOffOneCalloutEcuMRbCalloutFunctionEcuMRbModuleIDEcuMRbServiceIsNonAutosarEcuMRbOnGoOff…

java控制台输出乱码

第一步&#xff1a;修改 IntelliJ IDEA 全局编码、项目编码、属性文件编码 File->Settings… Editor->File Encodings(不要忘记点击Apply然后OK) 第二步&#xff1a;修改当前 Web 项目 Tomcat Server 的虚拟机输出选项 Run->Edit Configurations… 复制代码->…

DBMS-3.2 SQL(2)——DML的SELECT(含WHERE、聚集函数、GROUP BY、HAVING之间的关系)

本文章的素材与知识来自李国良老师和王珊老师。 数据操纵语言DML&#xff08;Data Manipulation Language&#xff09; SELECT 一.SELECT的语法与构成 1.语法 2.构成 二.投影 投影操作可以选择表中的若干列&#xff0c;主要体现在SELECT子句后的列表达式。 1.列表达式 2.…

【书生浦语实战】茴香豆企业级知识库问答工具-搭建Dify问答助手

快速结论 1、用茴香豆快速搭建Dify问答助手&#xff0c;自带拒答、rerank、切片长度判断、阈值调节功能&#xff0c;回答还能带出图片&#xff0c;顶呱呱&#x1f44d; 2、茴香豆git仓地址&#xff1a;https://github.com/internlm/huixiangdou 遇到问题去翻这里会更多解释&…

如何利用免费音频剪辑软件制作出精彩音频

现在有许多免费的音频剪辑软件可供选择&#xff0c;它们为广大用户提供了丰富的功能和便捷的操作体验&#xff0c;让音频编辑变得更加轻松和有趣。接下来&#xff0c;让我们一起走进这些免费音频剪辑软件的世界&#xff0c;探索它们的独特魅力和强大功能。 1.福昕音频剪辑 链…

李宏毅深度学习-图神经网络GNN

图卷积的开源代码网站DGL 好用的还是 GAT, GIN&#xff08;指出最好的卷积 就是 hi 邻居特征&#xff08;而且只能用 sum&#xff09;&#xff09; Introduction GNN 可以理解为是由 Graph&#xff08;图) Nerual Networks 组合而成的&#xff0c;图结构应该都在数据结构与…

No.12 笔记 | 网络基础:ARP DNS TCP/IP与OSI模型

一、计算机网络&#xff1a;安全的基石 1. 网络的本质&#xff1a;数字世界的神经系统 定义&#xff1a;计算机的互联互通&#xff0c;实现资源共享和信息交换组成要素&#xff1a;发送者、接收者、介质、数据、协议&#xff08;五大要素&#xff09; 2. 网络架构&#xff1…

STM32PWM应用

一、输出比较(OC) OC&#xff08;Output Compare&#xff09;输出比较 可以通过比较CNT与CCR寄存器值的关系&#xff0c;来对输出电平进行置1、置0或翻转的操作&#xff0c;用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前…