leetcode旋转数组问题怎么解决
发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,本篇内容介绍了"leetcode旋转数组问题怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解
千家信息网最后更新 2024年10月02日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安全错误
数据库的锁怎样保障安全
总是被游戏服务器踢号
登录sv显示连接服务器失败
浙江语音网络技术价目表
数管服务器
魔兽怀旧服灵风服务器介绍
生产服务器和开发服务器
网络安全规划职位要求
核心网络技术支撑
创驰服务器
apex和好友玩连接服务器超时
直播软件开发厦门
社区平台软件开发
落实网络安全工作措施
无线网络技术期末
开展网络安全等活动
深圳市擎格互联网科技游戏
326汽车网络技术试卷
2015服务器排名
网页系统数据存储在数据库哪里
美术教学与网络技术
数据库窗体字体颜色设置
无锡红心网络技术有限公司
腾讯会议的服务器测试
宜兴自动软件开发代理价钱
博朗高西软件开发
卫星通过什么方式获取数据库
go开发静态服务器
服务器开启后不显示桌面
全栈数据库
郑州国家网络安全周视频