leetcode旋转数组问题怎么解决
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容介绍了"leetcode旋转数组问题怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解
千家信息网最后更新 2025年11月08日leetcode旋转数组问题怎么解决
本篇内容介绍了"leetcode旋转数组问题怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
解题思路
暴力法每次旋转1个位置, 旋转k次即为正确答案。
旋转的时候也是利用前驱结点来实现的, 前驱结点的更新也借助temp变量。
这里重点体会如何完成向后移动一次目前阶段遇到题目不要钻牛角尖, 暴力法能解就暴力法。
代码
class Solution { public void rotate(int[] nums, int k) { int previous; int temp; for (int i = 0; i < k; i++) { previous = nums[nums.length-1]; //前驱结点初始为最后一个结点 for (int j = 0; j < nums.length; j++) { temp = nums[j]; //先保存当前结点 nums[j]=previous; previous=temp; //更新前驱结点 } } }}反转法 很实用
这个方法基于这个事实:当我们旋转数组 k 次,k%n 个尾部元素会被移动到头部, 剩下的元素依次向后移动。
1、反转可以把k%n个元素先放到前面,只需要对数组进行 0到k-1范围内的反转就可以得到想要的顺序;
2、反转剩下的k-1到n-1个元素即实现了元素依次后移;
3、前往要主义此处的k有可能超出数组长度,而如果恰等于数组长度就等于没变所以k=k%n。
class Solution { public void rotate(int[] nums, int k) { int n = nums.length; k %= n; //k可能会查过数组长度造成错误 //1、反转数组 reverse(nums,0,n-1); //2、前k个反转,后n-k个反转 reverse(nums,0,k-1); reverse(nums,k,n-1); } //反转数组 用这种写法可以方便的反转任意区间的数组 也很使用 public void reverse(int[] nums, int start, int end) { while (start < end) { int temp = nums[start]; nums[start] = nums[end]; nums[end] = temp; start++; end--; } }}环状替换
想到了但是代码实现的时候遇到了当 n%k==0的时候死循环而想不到解决的办法。
以下是leetcode提供的代码,巧妙的用了双循环循环解决了我不能解决的尴尬,核心代码都是一样的,外循环的此时必定是数组长度。
用count来控制外循环次数,内循环一镜到底都是我没有想到的。在编码方面还有很大提高。
public class Solution { public void rotate(int[] nums, int k) { k = k % nums.length; int count = 0; for (int start = 0; count < nums.length; start++) { int current = start; int prev = nums[start]; do { int next = (current + k) % nums.length; int temp = nums[next]; nums[next] = prev; prev = temp; current = next; count++; } while (start != current); } }}"leetcode旋转数组问题怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数组
结点
元素
循环
代码
前驱
长度
时候
暴力
移动
问题
实用
内容
更多
知识
更新
巧妙
很大
尴尬
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国家三级网络技术题库
科研项目软件开发费
婚礼桁架软件开发
四川农业大学dns服务器云空间
数据库没有成功打开
苹果国内服务器
校园智慧消防网络技术
网络技术架构分析
常见的数据库管理系统大小写
如何理解网络技术发展是把双刃剑
计算机网络安全管理法规
计算机网络技术中黑客是什么
我的小程序服务器是多少
丹东精益管理软件开发
cs go服务器升级
软件开发对人的危害
国家网络安全周校园日活动方案
网络安全分类图片
静安区工程软件开发大概费用
彩票过滤软件开发需要什么资质
国家网络安全学院就业方向
医保系统软件开发
服务器与技术信息服务
创建一个数据库表的基本操作
深圳楼控管理软件开发报价
如何把数据导入数据库
软件开发技术管理系统研发
微信发的信息是先经过服务器吗
成都服务器托管 租用
软件开发方向考软考