leecode189 轮转数组

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南 本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。 阅读详情

在这里插入图片描述

我的思路

这个题目本质上是移动数组,这种题目不难,本质上就是移动数组而已。
最简单的做题方式就是利用辅助数组来做。利用辅助数组存放两段区间,唯一需要注意的是这个k有可能会出现大于len的情况,此时我们需要对这个k进行取余 。

public void rotate(int[] nums, int k) {
    int len = nums.length;
    k = k%len;
    if(k ==0 ) return;
    int[] left = Arrays.copyOfRange(nums, 0,len-k);
    int[] right = Arrays.copyOfRange(nums,len-k,len);
    int j = 0;
    for(int num:right){
        nums[j++]=num;
    }
    for(int num:left){
        nums[j++]=num;
    }
}

在这个题目下面有这样一段话。

题目进阶:
1.尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
解不出来,只会一种方法就是引入数组。
2.你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
不会。

对于要求1,除了使用额外空间,我们还可以使用暴力解法,直接一个一个的进行移动即可。但这种方法只能通过38/39,有一个是无法通过的,超过时间限制。

public void rotate(int[] nums, int k) {
    //暴力解法
    int len = nums.length;
    k = k%len;
    if(k==0) return;
    for(int i =0;i<k;i++){
        int temp = nums[len-1];
        for(int j = len-2;j>=0;j--){
            nums[j+1]=nums[j];
        }
        nums[0]=temp;
    }
    return;
}

灵神的思路

灵神的思路就很强,他并没有引入额外空间,并且时间复杂度还很低,他是利用了三次颠倒。
1.先对整体进行颠倒。(1,2,3,4,5,6)->(6,5,4,3,2,1)。
2.在对前面的2个进行颠倒(5,6,4,3,2,1)。
3.对剩下的进行颠倒(5,6,1,2,3,4)。
4.通过上面的三步我们可以实现对原数组移动了两次。

证明过程这里不在说明参考题解

class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        k %= n; // 轮转 k 次等于轮转 k % n 次
        reverse(nums, 0, n - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, n - 1);
    }

    private void reverse(int[] nums, int i, int j) {
        while (i < j) {
            int temp = nums[i];
            nums[i++] = nums[j];
            nums[j--] = temp;
        }
    }
}

作者:灵茶山艾府
链接:https://leetcode.cn/problems/rotate-array/solutions/2784427/tu-jie-yuan-di-zuo-fa-yi-tu-miao-dong-py-ryfv/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【linux】解决报错:Network error: Connection refused 阅读详情

相关推荐

高通平台camera构架sensor驱动详解

优先阅读。

a5566255的专栏 3251

LeeCode 189.轮转数组

摘要: 该问题要求将整数数组元素向右轮转k个位置。示例展示了轮转过程和结果。解决方案通过三次内存拷贝实现:1)将最后k个元素复制到临时数组前部;2)将剩余元素复制到临时数组后部;3)将临时数组整体复制回原数组。关键优化是取模运算k%=numsSize处理k大于数组长度的情况。代码使用O(n)空间复杂度,测试通过LeetCode提交。进阶挑战是探索更多解法,包括O(1)空间复杂度的原地算法。

u012116089的博客 282

Windows 10下用Python 3搞定Android源码下载:最新repo工具避坑指南

本文详细介绍了在Windows 10系统上,使用Python 3和官方最新repo工具下载Android源码的完整流程。文章提供了从Git安装、环境配置到repo工具初始化、同步加速及常见错误排查的避坑指南,帮助开发者高效搭建稳定的源码下载环境。

weixin_29266749的博客 436

leecode 189轮转数组

轮转数组

weixin_46040177的博客 133

Easymesh之拓扑模块(二)

介绍 easymesh 拓扑消息:Topo discovery、Topo notification、Topo query、Topo response

qq_53619687的博客 2152

RK35X8调试YT8531单网口千兆以太网PHY芯片,修复ping不通或者IP地址丢失的问题

RK35X8上调试YT8531以太网PHY

荻夜的博客 3976

leecode 题目189 轮转数组(python)

给你一个数组,将数组中的元素向右轮转 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,-

weixin_44230172的博客 324

Open3D 计算点云法向量的夹角【2026最新版】

计算法向量的夹角,博客长期更新,本文最新更新时间为:2026年3月7日。

点云侠的博客 3130

Leecode 189. 轮转数组

V1.0版本 class Solution { public void rotate(int[] nums, int k) { //数组长度 int oldLength=nums.length; int zhengShuK=(k%oldLength);//求余,整数倍旋转没有意义,把整数倍之外的地方拿出 if(nums.length==1||nums.length<=zhengShuK){ return;.

风吟Pro的博客 168

基于单光子探测的高重频多通道符合测距

TDC专栏之基于单光子探测的高重频多通道符合测距

sdau2005的博客 1202

从0到1:用Claude 3.7十日拿下教育部课题申报书(附可修改LaTeX模板)

🟣"作为教育部人文社科项目评审专家,请根据近三年立项数据分析,为[您的学科方向]领域推荐5个具有创新性且符合'十四五'规划的重点选题,要求选题体现交叉学科特征,并标注潜在理论突破点"🟣"根据前期研究基础,创建包含4个研究模块、12个关键节点的三维技术路线图,要求体现实验仿真-实证研究-理论建模的螺旋递进关系,并标注每个节点的预期成果形态"🟣"现在切换至教育部学科评审组组长模式,从选题价值、创新程度、研究可行性三个维度对本申报书进行盲审,生成包含9个扣分风险点的诊断报告及修改优先级排序"

智能AI让学术科研更容易 545

Leecode189:轮转数组

Leecode189

MengyuyangEddy的博客 124

magic-api的鉴权机制配置 (附实战代码)

引入magic-api及相关数据库驱动依赖 配置yml文件和编辑器JS文件 实现登录鉴权逻辑,包括用户验证和Token处理 接口鉴权拦截器设计,确保接口访问安全性 文章提供了完整的代码示例,帮助开发者快速集成magic-api框架并实现权限控制功能。

码农研究僧的博客 227

LeeCode热题100学习总结--189题轮转数组

该算法通过三次翻转实现数组右旋k位:1.对k取模避免重复轮转;2.整体翻转数组;3.翻转前k个元素恢复后半段顺序;4.翻转剩余元素恢复前半段顺序。例如[1,2,3,4,5,6,7]右旋3位:整体翻转得[7,6,5,4,3,2,1],翻转前3位得[5,6,7,4,3,2,1],再翻转后4位得最终结果[5,6,7,1,2,3,4]。时间复杂度O(n),空间复杂度O(1)。

i56433u的博客 182

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Leecode热题100--189:轮转数组

C++和python实现Leecode189:轮转数组

qq_41920323的博客 273

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

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

LeeCode 189. 轮转数组 个人见解(小白一个)

【代码】LeeCode 189. 轮转数组 个人见解(小白一个)

yjStudyJava的博客 186

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

简单易懂——轮转数组:将数组中的元素向右轮转 k 个位置(c语言实现LeeCode.189:中等)

针对,如何将数组中的前m个元素移动到数组末尾。列举了两种可行的方法,和一种直觉算法。

GONGTEach的博客 1399

LeetCode 热题 100打卡第十天

以数组 `intervals` 表示若干个区间的集合,其中单个区间为 `intervals[i] = [starti, endi]`。请你合并所有重叠的区间,并返回 *一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间*。主要思想,首先对数组排序,如果后一个区间的左边界小于前一个区间的右边界,这说明这两个区间可以进行合并。(排序依靠区间的左边界进行)

qq_48527330的博客 450

【思路详解+详细注释】小白都能看懂的力扣算法详解——数组

小白都能看懂的力扣算法详解——数组

Liu_y_xin的博客 1164

LeetCode 189.轮转数组

🚨我们使用 reverse逆置函数的时候要注意:数组下标是从 0 开始的 🚨我们还需要注意一个问题:如果 k 超过了数组元素个数怎么办? 比如:数组是 [ 1 2 3 4 5 6 7] ,k = 8 的时候,此时数组元素个数为 7,而要求向右旋转 8 个位置,如果按照上面分析的情况,第一趟对前 n - k 逆置,也就是 7-8个逆置,难道对前 -1 个逆置吗? 仔细想一下最后的结果会是什么? 结果数组就是 [ 7 1 2 3 4 5 6 ] 🚨我们要记住这道题的核心叫 轮转数组,也就是当轮转的次数

weixin_74937672的博客 1549

[LeetCode 189] 轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]1≤numslength≤105−231≤numsi≤231−10≤k≤105。

qq_45371462的博客 720

【LeetCode力扣】189 53 轮转数组 | 最大子数组和

189. 轮转数组 - 力扣(LeetCode)53. 最大子数组和 - 力扣(LeetCode)我们可以使用额外的数组来将每个元素放至正确的位置。用 len 表示数组的长度,我们遍历原数组,将原数组下标为 i 的元素放至新数组下标为 (i+k) % len 的位置,最后将新数组拷贝至原数组即可。

Hacynn的博客 1920

【LeetCode刷题日志】189.轮转数组

用 nnn 表示数组的长度,我们遍历原数组,将原数组下标为 iii 的元素放至新数组下标为 (i+k) mod n(i+k)\bmod n(i+k)modn 的位置,最后将新数组拷贝至原数组即可。方法一中使用额外数组的原因在于如果我们直接将每个数字放至它最后的位置,这样被放置位置的元素会被覆盖从而丢失。该方法为数组的翻转:我们可以先将所有元素翻转,这样尾部的 k mod nk\bmod nkmodn 个元素就被移至数组头部,然后我们再翻转。向右轮转 3 步: [5,6,7,1,2,3,4]

m0_68662723的博客 1万+

LeetCode 189.轮转数组(三种方法解决)

三段逆置>空间换时间>暴力求解。评判哪个方法为最优解,一般是关注该方法运行时的时间复杂度。时间复杂度低,算法计算时间越快,则为做优算法。对于空间换时间的方法,虽然运行消耗内存增加,但一般不太会关注消耗内存的多少,现在随着技术发展的越来越快,对于内存的成本控制的也越开越低。所以用空间换时间,还是划算的。

QZW的博客 2304

LeetCode 189. 轮转数组

leetcode 189. 轮转数组

Edison's 小宇宙 1万+

LeetCode189_轮转数组

数组轮转、翻转reverse()

Haolin_Liu的博客 764
上一篇: 神经网络介绍
下一篇: 238 除自身以外数组的的乘积
TranquilGlow
博客等级 码龄5年 132粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值