189. Rotate Array [easy] (Python)

【信息科学与工程学】【数据科学】 第四十四篇 数据湖 系列二 函数库01 2. 近似最近邻搜索(ANN): 通过HNSW等图索引模型加速,模型定义为构建一个层次化导航小世界图。依赖于消息队列(Kafka/Pulsar)、分布式文件系统(HDFS/S3)的客户端及连接库。依赖专门的向量检索库(如FAISS, Milvus)。管控目标: 召回率(Recall@K) > 95%,查询延迟 < 100ms。管控目标: < 1% (核心业务字段) 或 < 5% (一般字段)依赖数据处理框架(如Spark, Pandas)的核心统计函数。,通过牺牲精确性(ANN)来换取搜索速度的大幅提升。 阅读详情

题目链接

https://leetcode.com/problems/rotate-array/

题目原文

Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

题目翻译

向右轮转一个有n个元素的数组k步。比如:n = 7,k = 3时,数组 [1,2,3,4,5,6,7] 可以得到 [5,6,7,1,2,3,4] 。
注:尽量用多种方法来解决这个问题。
(另外:注意只能直接修改原数组,不能返回新的数组,修改必须是”in-place”的。)

思路方法

思路一

利用Python的数组slice的操作和赋值,实际上相当于创建了两个新的数组,分别保存原数组的前后部分,再依次将元素赋值给原数组。【时间复杂度O(n),空间复杂度O(n)】

代码

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        k = k % len(nums)
        nums[:k], nums[k:] = nums[len(nums)-k:], nums[:len(nums)-k]

思路二

只创建一个原数组的拷贝,然后根据循环的公式对原数组进行重新赋值。【时间复杂度O(n),空间复杂度O(n)】

代码

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        old_nums = nums[:]
        for i in xrange(len(nums)):
            nums[(i + k) % len(nums)] = old_nums[i]

思路三

将前n-k个原地反转,将后k个原地反转,再将整个数组原地反转,即得所求。【时间复杂度O(n),空间复杂度O(1)】

代码

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        k = k % len(nums)
        self.reversePart(nums, 0, len(nums)-k-1)
        self.reversePart(nums, len(nums)-k, len(nums)-1)
        self.reversePart(nums, 0, len(nums)-1)

    def reversePart(self, nums, start, end):
        while start < end:
            nums[start], nums[end] = nums[end], nums[start]
            start, end = start+1, end-1

思路四

实际上,为了使空间复杂度为O(1),我们可能会想到对原数组做k次“循环右移一位”的解法。然而直接这么做会超时,所以可以考虑下面的优化做法。其思想是,每次把数组最后k位交换到正确的位置,循环直到所有元素位置正确。

代码

class Solution(object):
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        k, start, n = k % len(nums), 0, len(nums)
        while k % n != 0 and n > 0:
            for i in xrange(k):
                nums[start + i], nums[len(nums) - k + i] = nums[len(nums) - k + i], nums[start + i]
            start, n = start + k, n - k
            k = k % n

PS: 新手刷LeetCode,新手写博客,写错了或者写的不清楚还请帮忙指出,谢谢!
转载请注明:http://blog.youkuaiyun.com/coder_orz/article/details/52052767

Windows Server 搭建ftp服务 阅读详情

相关推荐

threejs开发可视化数字城市效果

theme: condensed-night-purple 灵感图 现在随着城市的发展,越来越多的智慧摄像头,都被互联网公司布到城市的各个角落,举一个例子,一个大楼上上下下都被布置了智能摄像头,用于监控火势,人员进出,工装工牌佩戴等监控,这时候为了美化项目,大公司都会将城市的区域作为对象,进行3d可视化交互,接下来的内容,就是基于以上元素,开发的一款城市数据可视化的demo,包含楼宇特...

weixin_41770018的博客 1579

Python彩色图像旋转+平移变换数学原理及实现

图像的几何变换在图像处理中被经常使用,其中图像旋转又是使用频率很高的变换,不仅应用于普通的图像的处理中,也会用于机器学习中的图像数据增强。图像旋转的数学原理很简单,就是简单的矩阵乘法。 本文给出了图像旋转的Python详细实现过程(纯手工),此外也给出了python内嵌函数roate的用法。

sunnyoldboy博客 3506

【R语言】富集分析可视化代码(整理版)

分别介绍了如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析、使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化、使用R clusterProfiler包和R AnnotationHub包对基因进行GO/KEGG功能富集分析、OrgDb包制作以及结果可视化等。故,我重新整理了一波,并补充了可对多个分组的富集结果进行可视化以及富集结果绘制圈图等的代码。关注“在打豆豆的小潘学长”公众号,发送“富集分析3”获得完整代码包和演示数据。一、单组富集结果可视化。

weixin_54004950的博客 1万+

LeetCode【#189】Rotate Array(旋转数组)

题目链接: 点击跳转 题目: Given an array, rotate the array to the right byksteps, wherekis non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3Output: [5,6,7,1,2,3,4] Explanation: rotate 1 ste...

Mikchy的博客 361

【硬核指南/MI50 32G/Ubuntu】从零部署大模型:MI50显卡Ubuntu系统驱动安装与避坑全记录

本文详细记录了在Ubuntu系统上为AMD MI50显卡安装驱动并部署大模型的完整流程,包括硬件兼容性检查、BIOS关键设置、系统安装优化、ROCm驱动安装及常见问题解决方案。特别针对MI50显卡在X99平台上的特殊配置需求提供了实用技巧,帮助用户避免常见陷阱,提升大模型训练效率。

weixin_42520909的博客 805

DSH-Work:一个让DeepSeek下载即用的Harness客户端

使用大模型工具时,环境配置往往比模型本身更让人头疼。DeepSeek Harness作为一类封装层,将模型调用、上下文管理、参数控制等复杂细节统一收拢,对外提供简洁操作入口。开源的DSH-Work正是这样一款Harness客户端,它通过自带运行时与保守默认配置,实现了下载即用、免配环境的目标,让使用者无需掌握Python、CUDA等专业知识即可快速连接DeepSeek云端或本地服务。对于非技术背景的用户,它降低了AI工具的使用门槛;对于开发者,它把时间从环境排错中解放出来,更专注于提示词调优与工作流设计。无

weixin_29048309的博客 342

python rotate函数解析

先看一张图 rotate的主要目的就是将【first~middle】的元素和【middle~last】的元素互换位置,middle所指向的元素会成为整个容器的第一个元素。 def rotate(self, n: int) -> None: ...可以看出他需要传入的参数是int类型的一个整数【也是上面所说的middle的位置】。​​​​​(从后往前数的位数默认从1开始) 一般...

“花花”公子_龙的博客 1万+

LVGL 9Text Area 控件 (lv_textarea) 使用指南

是一个可编辑的文本输入控件,通常用于在用户界面中输入和编辑多行或单行文本。该控件支持文本插入、删除、光标控制、文本选择、密码输入等功能。它的文本内容可以通过键盘、API 或事件进行修改,还可以设置最大文本长度、占位符文本和密码模式等。是一个强大且灵活的文本输入控件,适用于多种用户输入场景,支持文本插入、删除、光标控制、密码输入等功能。通过 LittlevGL 提供的丰富 API,开发者可以自定义文本区域的外观和行为,实现复杂的文本输入需求。

m0_62599305的博客 1673

splice删除数组中的指定的某些元素

splice删除我们常见的是如下,我们要删除addr数组中,包含属性a为空的元素 for(let i=0;i<==arrd.length-1;i++){ if(addr[i].a==''){ addr.splice(i, 1) } } 但是这样是不能删除数组中所有a属性为空的数组的,因为splice会改变原数组,会导致i的变化,所以我们可以使i一直等于数组的长度-1 for(let i<=arrd.length-1;i>=0;i--){ if(addr[i].a==''

LLL_liuhui的博客 4386

TIA博途选型工具Selection Tool的基本使用方法介绍

TIA博途选型工具Selection Tool的基本使用方法介绍

Robot_PLC_HMI_Automation 4209

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1116

leetcode 61. Rotate List

Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: Input: 1->2->3->4->5->NULL, k = 2 Output: 4->5->1->2->3->NULL Explanati...

luoshaohong的博客 166

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

君逍遥o 808

LeetCode189 Rotate Array-python(easy)

题目来源:    https://leetcode.com/problems/rotate-array/description/题目分析:  题目给定我们一个数组和要将数组整体向右移动的位数k,k是正数,需要我们得到一个全新的移位后的数组。下面将尝试几种方法来进行解决。1.暴力检索  采用循环的方式,直接对每一位进行相应的移位。这里需要注意它使用的方法是将前面的元素从第0位开始依次与最后一位交换,...

revivre的博客 519

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【python】leetcode 189. Rotate Array (easy)

189. Rotate Array (easy) Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate...

momottyy的专栏 223

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

189. Rotate Array [Easy] 数组

189. Rotate Array 189. Rotate Array class Solution(object): def rotate(self, nums, k): """ :type nums: List[int] :type k: int :rtype: Non...

qq_35319215的博客 171

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[LeetCode] 189. Rotate Array_Easy tag: Array

Given an array, rotate the array to the right byksteps, wherekis non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 steps to the right: [7...

weixin_30270561的博客 57

LeetCode 189 Rotate Array

Recently I have been practicing my coding ability using LeetCode. I was really weak in programming so I started from Easy ordered by the number. At first, I wasn’t able to understand the meaning of t...

Jasmine_Tang的博客 334

Leetcode_Array --189. Rotate Array [easy]

Given an array, rotate the array to the right by k steps, where k is non-negative. 给定一个数组,将数组向右扭转k步,k是非负的 Example 1: Input: [1,2,3,4,5,6,7] and k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 step...

Ling的博客 174

MoviePy 快速入门指南:从安装配置到 10 分钟剪辑实战

本篇技术指南面向希望用 Python 进行视频编辑的开发者,系统讲解 MoviePy 的完整入门路径:环境安装与 FFmpeg/FFplay 二进制配置、核心的 Clip(剪辑)概念与工作流程,以及一个"10 分钟制作 Big Buck Bunny 预告片"的完整实战教程(含加载视频、抽取片段、预览、剪辑、文字/Logo 叠加、时间编排、合成、定位、转场特效、滤镜与渲染)。读完后你将具备从零搭建环

gitblog_00848的博客 326

python opencv旋转,Python OpenCV cv2.rotate()用法及代码示例

OpenCV-Python是旨在解决计算机视觉问题的Python绑定库。cv2.rotate()方法用于将2D数组旋转90度的倍数。函数cv::rotate以三种不同的方式旋转数组。用法: cv2.cv.rotate( src, rotateCode[, dst] )参数:src:它是要更改其色彩空间的图像。rotateCode:它是一个枚举,用于指定如何旋转数组。dst:它是与src图像大...

weixin_39862871的博客 5503

[LeetCode]189.轮转数组(python)

定义了一个翻转数组的函数reverse。只要把整个数组翻转一次,再把前k个元素翻转一次,把第k+1个元素到末尾部分翻转依次,即得到轮转后的数组。

xyhaaab的博客 316

自学Python:旋转图像角度

使用Pillow模块提供的rotate()方法可以逆时针旋转图片,如果旋转90度或者270度,图像的高度与宽度会有变化,图片的比率不变,多的部分以黑色图像替代。 from PILimport Image tp=Image.open(‘1.png’) tp.rotate(45).save(‘45.png’)#旋转45度 tp.rotate(180).save(‘180.png’)#旋转180度 执行后查看图片,图像被压缩了,如果想要旋转后的图像还是完整显示,可以使用参数expand=True,具体使用方法如下

1924

LeetCode 189. 轮转数组:三种经典解法全解析

本文详细解析了LeetCode 189题"轮转数组"的三种解法:新数组映射法(O(n)空间)、原地交换法(环状替换,O(1)空间)和反转数组法(最优解)。重点介绍了每种方法的实现思路、代码示例和复杂度分析,特别强调了处理k值取模、原地修改等关键细节。通过对比三种方法的优缺点,推荐在面试和实际开发中使用思路巧妙且代码简洁的反转数组法。文章还总结了常见错误点,帮助读者全面掌握该题目的解题技巧。

2401_86788218的博客 1083

leetcode 旋转数组(Rotate Array) python 最简代码

所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。 ''' Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3 Output: [5,6,7,1,2,3,4]...

Jasmine_dream 636

【leetcode】189. 轮转数组(python)+ 本地测试

思路分析:原地修改,不使用额外空间(已AC) 思路:逆置 1.先把前n-k个元素逆置;2.再把后k个元素逆置;3.再整体逆置 特殊情况: 1.k > len(nums)? 2.k == len(nums)? ==》取模 # 通过40 ms 24.3 MB Python 2022/03/16 21:54 class Solution(object): def reverse(self,arr): #self代表类的实例,而非类。 n = len(arr) i, .

Rudy的博客 1463
上一篇: 278. First Bad Version [easy] (Python)
下一篇: 8. String to Integer (atoi) [easy] (Python)
coder_orz
博客等级 码龄14年 102粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值