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

leetcode:189.轮转数组 来源:力扣(LeetCode)链接: https://leetcode.cn/problems/rotate-array/给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例 1: 示例 2: 提示: 1 阅读详情
import java.util.Arrays;
/**
 * @author Young Jun
 * @creat 2024-03-26-8:52
 */
public class TurnArray189 {
    /**
     * LeeCode 189. 轮转数组
     * 输入: 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]
     */
    public static void main(String[] args) {
        int[] nums = {-1};
        rotate(nums,2);
        System.out.println(Arrays.toString(nums));
    }

    /**
     * nums = [1,2,3,4,5,6,7], k = 3
     * 进行一次反转[7,6,5,4,3,2,1]
     * 将其分成两部分 [7,6,5 || 4,3,2,1]
     * 将两部分分别反转 [5,6,7 || 1,2,3,4]得到答案
     * 当然 还有特殊情况 比如 [-1] k=2; [1,2,3] k=4
     * 那么我们就要控制反转次数,或者指针k的位置以防索引越界
     * 我们可以认为当k=nums.length时数组不动,
     * 所以我们可以将k%nums.length取得的余数再去进行移动与反转
     * @param nums
     * @param k
     */
    public static void rotate(int[] nums, int k) {
        if (k>nums.length){
            k = k%nums.length;
        }
        if (nums.length==1){
            return;
        }
        if (nums.length==2){
            for (int i = 0; i < k; i++) {
                    reverse(nums,0,nums.length-1);
            }
            return;
        }
        reverse(nums,0,nums.length-1);
        reverse(nums,0,k-1);
        reverse(nums,k,nums.length-1);

    }

    /**
     * 数组的反转
     * 定义两个指针,左指针和右指针,
     * 都向中间移动,慢慢反转
     * 比如[1,2,3,1,4,5] 左指针0,右指针nums.length-1=4;
     * 第一次  [5,2,3,1,4,1]
     * 第二次  [5,4,3,1,2,1]
     * 第三次  [5,4,1,3,2,1]
     * @param nums
     * @param left
     * @param right
     */
    public static void reverse(int[] nums,int left,int right) {
        int t = 0;
        while (left<=right){
            t=nums[left];
            nums[left] = nums[right];
            nums[right] = t;
            left++;
            right--;
        }
    }
}

科研指南:IEEE期刊LaTeX/Word模板下载与使用全解析 本文详细解析了IEEE期刊LaTeX/Word模板的下载与使用技巧,帮助科研人员高效完成论文排版。从官方模板获取入口到LaTeX文档结构配置,再到Word样式管理与常见问题解决方案,全面覆盖投稿准备的关键步骤。特别针对数学公式、参考文献和图片处理等难点提供实用建议,助力学术写作规范化。 阅读详情

相关推荐

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1118

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

Python实战:3步搞定视频去重,告别重复文件烦恼(附完整代码)

本文提供了一套基于Python的视频去重实战方案,通过三步流程(抽帧、生成内容指纹、相似度比对)高效识别重复视频文件。文章详细介绍了使用dHash算法生成视频指纹的核心原理,并提供了完整的代码实现,帮助用户快速构建自己的视频去重工具,告别重复文件管理烦恼。

weixin_29054245的博客 379

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

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

Hacynn的博客 1920

KEPServerEX与三菱iQ-R系列PLC通讯

KEPServerEX与三菱iQ-R系列PLC通讯Mitsubishi Ethernet北京东方鼎晨科技有限公司目 录1. 前言2. 三菱PLC端相关设置3. Kepware端相关设置KEPServerEX是美国PTC Kepware公司生产的具有行业性的连接平台,KEPServerEX支持150多种通讯协议,用于向您的所有应用程序提供单一来源的工业自动化数据。该平台的设计使用户能够通过一个直观的用户界面来连接、管理、监视和控制不同的自动化设备和软件应用程序。KEPServerEX利用OPC(自动化产业的互

qq_28768521的博客 8096

植物叶绿体基因组分析全攻略:从共线性到密码子偏好性

本文全面解析植物叶绿体基因组分析流程,从共线性分析到密码子偏好性研究。详细介绍了叶绿体基因组结构特征、测序数据获取与质量控制、基因组组装与注释方法,以及比较基因组学和进化分析技术。特别关注IR区边界变异分析和选择压力评估,为植物系统发育研究和物种鉴定提供实用指南。

weixin_28475533的博客 221

[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

微积分,用编程理解高数(python,C,C++)

很好理解,导数中,x是哪一点的导数,dx是精准度,y等于f(x)即函数。导数结果就是瞬时变化率。积分很好理解,a为下限,b为上限,y为函数,结果就是y=f(x)下a到b的面积。只要用定积分代入a=0,b=10(10s)y=x(1*x=1)就得到结果。F(x)为原函数,即微分后的函数是f(x)dx,微分前是F(x)一列车初始速度为10m/s,加速度为。才几十行代码,微积分也不是很难啊。,问速度达到20时车走了多少米。

linhhanpy的博客 1178

【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万+

避坑指南:大疆智图集群建模中5个90%新手会踩的雷(附错误日志分析)

本文针对大疆智图集群建模功能,总结了新手在部署和运行时极易遇到的五个常见问题,包括共享目录权限与路径、主从节点版本一致性、临时存储路径设置、网络与防火墙配置以及错误日志分析。文章结合具体错误日志,提供了详细的排查步骤和解决方案,旨在帮助用户快速定位并解决问题,充分发挥集群建模的效率优势。

weixin_29238147的博客 335

Ubuntu新手必看:3种方法快速查看和编辑JSON文件(附jq安装指南)

本文为Ubuntu新手详细介绍了三种查看和编辑JSON文件的核心方法:命令行利器jq、灵活脚本Python以及直观的图形化编辑器(如VS Code)。文章重点解析了jq的安装与核心用法,并对比了各方案的优缺点,帮助用户根据快速查询、复杂处理或直观编辑等不同场景,选择最合适的工具,从而高效处理JSON数据。

weixin_29229989的博客 416

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

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

QZW的博客 2304

【雷达】基于matlab合成孔径雷达干涉测量(InSAR)时序分析【含Matlab源码 9037期】

合成孔径雷达干涉测量(InSAR)时序分析 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 159

LeetCode 189. 轮转数组

leetcode 189. 轮转数组

Edison's 小宇宙 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode189_轮转数组

数组轮转、翻转reverse()

Haolin_Liu的博客 764

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode189.轮转数组

目录189. 轮转数组题目描述实例解题思路1. 先整体逆转2.逆转子数组[0, k - 1]3.逆转子数组[k, numsSize - 1]易错点代码 189. 轮转数组 题目描述 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。OJ链接 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 实例 1.实例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,

一些七零八碎的知识点 945

【LeetCode】189. 轮转数组

给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。向右轮转 1 步:向右轮转 2 步:向右轮转 3 步:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]O(1)

m0_73784704的博客 910

【C语言】LeetCode 189. 轮转数组 的n种解法

【C语言】LeetCode 189. 轮转数组 的n种解法 解法一 循环移位 解法二 数组映射 解法三 巧用反转

本人码云:https://gitee.com/qinglongjun 1051

分享力扣—189.轮转数组 的三种解法

轮转数组~欢迎来到媛仔的题目分享栏目!!

vpurple_的博客 2272

【力扣】189. 轮转数组

【力扣】189. 轮转数组

Danger的博客 703

力扣-189.轮转数组

力扣-189.轮转数组。解题思路分享。

weixin_67851619的博客 636

力扣最热一百题——轮转数组

轮转数组,队列以及双指针三次翻转写法,新手也能学会!!!

WenJGo的博客 2164

LeeCode 189.轮转数组

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

u012116089的博客 282

LeetCode_189.轮转数组

目录 一、题目 二、解法 1)BF法 2)新数组 3) 逆置法 一、题目 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 题目链接:189. 轮转数组 - 力扣(LeetCode) (leetcode-cn.com) 二、解法 1)BF法 即最暴力的解法:时间复杂度O(N^2) 空间复杂度O(1) // BF法 时间复杂度O(N^2) 空间复杂度O(1) void rotate01(int* nums, int numsSize, int k)

weixin_63246064的博客 2099

【LeetCode】轮转数组

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

qq_63320529的博客 451

189.轮转数组

我们先想象一下数组移动的过程,k为1就是向右移动一个,k为2就是向右移动两个。这里是我做这道题时第一时间想到的方法,实际上还可以优化一下,代码中我们使用了循环来移动数组,眼光只看到“一个一个”数字和移动过程。可以看到这里橙色框选的和紫色框选的部分其内部各元素的顺序没有发生改变,所以我们能够使用两次memcpy得到移动后的数组,最后再使用一次memcpy将结果复制回原数组。那你的k就没有意义了,反正最终的结果和原先没有区别。-----------下面是题目-------------LeetCode刷题记录。

2402_89271009的博客 352

leecode189 轮转数组

利用辅助数组存放两段区间,唯一需要注意的是这个k有可能会出现大于len的情况,此时我们需要对这个k进行取余。对于要求1,除了使用额外空间,我们还可以使用暴力解法,直接一个一个的进行移动即可。灵神的思路就很强,他并没有引入额外空间,并且时间复杂度还很低,他是利用了三次颠倒。这个题目本质上是移动数组,这种题目不难,本质上就是移动数组而已。2.在对前面的2个进行颠倒(5,6,4,3,2,1)。3.对剩下的进行颠倒(5,6,1,2,3,4)。

everything_study的博客 470
上一篇: 集合与斗地主
下一篇: 关于杨辉三角的理解
yjStudyJava
博客等级 码龄3年 61粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值