leetcode旋转数组问题怎么解决
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,本篇内容介绍了"leetcode旋转数组问题怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解
千家信息网最后更新 2025年02月12日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安全错误
数据库的锁怎样保障安全
国家网络安全学院有谁
上海门禁软件开发方案
家庭网络与网络安全论文
怎样在国外搭建服务器
网络技术题库百度云
软件开发公司涉及法律法规
天津服务器配置云空间
2019网络安全事件与分析
网络安全教育雷雳
r连接数据库
临安奇单互联网科技有限公司
后勤网络安全
衡水浪潮服务器
qt软件开发架构
标准用户访问服务器管理器
云电互联网科技和腾讯官司
网络安全信息意识手册
网络安全工作认真学习
我的世界怎么启动下载好的服务器
bacdive数据库权威吗
延边州党委党组网络安全
潍坊平台软件开发哪家好
中肯网络技术有限公司
联通宽带用的是电信服务器
mysql 数据库表分区
门禁系统连接不上服务器
网络映射服务器
gis影像数据库
bug 软件开发水平
bacdive数据库权威吗