/**
* 旋转数组:将数组的后 k 位数移至头部,前 length - k 位数移至尾部
* 要求使用原地算法,即不使用额外的空间
* @param nums 数组
* @param k 旋转的个数
*/
private static void rotate(int[] nums, int k) {
int length = nums.length;
// 无须操作
if (k == 0 || k == length || length == 1) {
return;
}
// 修正 k
if (k > length) {
k %= length;
}
// 从 length - 1 开始
int indexLimit = length - 1;
int curIndex = indexLimit;
int lastIndex = indexLimit;
int lastValue = nums[indexLimit];
int count = 0;
while (count++ < length) {
curIndex += k;
// 修正 curIndex
if (curIndex > indexLimit) {
curIndex -= length;
}
int tmp = nums[curIndex];
nums[curIndex] = lastValue;
lastValue = tmp;
if (curIndex == lastIndex) {
// 一次完整的迭代交换后
// 需要重置索引和 lastValue
curIndex = --lastIndex;
lastValue = nums[curIndex];
}
}
}
相关推荐
【天线与电波传播】电波传播部分 第7章 电波传播的基础知识3
菲涅尔区与菲涅尔带的基本知识
力扣【LeetCode】—— 189. 旋转数组【java】
题目链接:https://leetcode-cn.com/problems/rotate-array/ 题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: [1,2,3,4,5,6,7] 和 k = 3 结果: [5,6,7,1,2,3,4] 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的 原地 算法。 方案一:暴力 该解决方案虽然满足题意中的空间复杂度条件,但是时间复杂度为O(k*n),pub
linux CentOS7安装VCS、Verdi、SCL
1.Linux下所需安装文件 链接:https://pan.baidu.com/s/1E_l4ARFYEnp57jlX95Bpog 提取码:ggdz synopsysinstaller_v5.0 scl_v2018.06 vcs_mx_vO-2018.09-SP2 vcs_vO-2018.09-SP2 verdi-2018.9 2.Windows破解文件 scl_keygen_2030 3.安装installer 打开终端,进入synopsysinstaller_
力扣189.旋转数组
力扣189.旋转数组解法一解法二解法三 三种解法,解法一很容易想到,后两种解法比较巧妙,在这里记录一下。 解法一 每次将数组每一位向后挪动一位,挪动k%nums.length次(k%nums.length是因为挪动nums.length的倍数次相当于没有挪动) //时间复杂度:O(kn) //空间复杂度:O(1) class Solution { public void rotate(in...
手把手教你用OpenClaw+飞书打造论文写作AI助手(附踩坑实录)
面对几十篇文献,逐一阅读摘要都费时。我:“请提取桌面‘论文参考文献’文件夹中所有PDF的摘要,整理成表格,包含:论文标题、作者、发表年份、核心方法、主要结论。AI助手:“正在处理...已提取18篇论文摘要,汇总表格已保存到桌面‘文献摘要汇总.xlsx’。这比我自己一个个打开PDF复制粘贴快了不止100倍。OpenClaw+飞书的组合,让AI真正成为了我的“数字员工”。虽然配置过程有些曲折,但看到它在飞书里回应指令、帮我处理繁琐工作时,那种成就感无可替代。如果你也在准备论文,不妨试试这套方案。记住,
Openharmony 命令行工具hdc的获取与安装
OpenHarmony实战:命令行工具hdc安装应用指南_hdc工具-优快云博客t=N7T8。
力扣189.旋转数组 C语言
力扣189 旋转数组 个人感觉挺不错的一道题,而且大公司面试也会出现这样的题 题目分析: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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...
013:无人机航线规划的概念
航线规划是无人机任务规划的核心环节,它决定了无人机在整个任务执行过程中的飞行路径。航线规划需要考虑多种因素,包括飞行时间、飞行距离、能源消耗、飞行安全等。
Leetcode 189. 旋转数组 C++
Leetcode 189. 旋转数组 题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 测试样例 示例 1: 输入: [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: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释:
矿石生成(1)
这个提供了标准化的矿石放置配置模板简化了常见和稀有矿石的配置过程遵循了Minecraft原版的世界生成模式提高了代码的可读性和可维护性通过使用这个类,模组开发者可以更轻松地配置矿石的生成规则,而不需要每次都手动编写完整的放置修饰符列表。这种设计模式在原版Minecraft和其他大型模组中也很常见,是一种良好的编程实践。// 导入语句...// 字段和方法...包声明表明这个类位于luckymod模组的WorldGen包中,专门处理世界生成相关配置。导入语句。
如何在 DevOps 管道中实现 AI?
AI与DevOps的融合(AIOps)正在重塑软件开发生命周期。本文系统阐述了AI在DevOps中的五大应用场景:智能监控、自动化测试、安全防护、CI/CD优化和事件管理,并提出了六步实施框架:痛点识别、工具选型、流程集成、智能监控、MLOps和治理合规。通过Netflix、Google等企业的实践案例,验证了AI在提升部署效率(降低40%故障率)、缩短问题解决时间(MTTR减少60%)方面的显著价值,同时指出数据质量、模型偏差等实施挑战。研究表明,战略性地
Leetcode 189. 旋转数组
Leetcode 189. 旋转数组 题目描述 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。 示例 1: 输入: [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] ...
使用rknn进行facenet部署
修改facenet网络的forward函数代码。
Leetcode189. 旋转数组
Leetcode189. 旋转数组 题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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] 题解: 方案...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
LeetCode第189题_旋转数组
给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
Leetcode189--旋转数组
Leetcode189–旋转数组(多种方法解题,python) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 编程语言:python 作者:黑暗主宰 邮箱:shengzhanhe@gmail.com 文章目录Leetcode189--旋转数组题目描述解题思路 Leetcode189–旋转数组 题目描述 原题链接: https://leetcode-cn.com/pr...
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
LeetCode--189 旋转数组
题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 (说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的原地算法。) 示例 输入: [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,...
LeetCode 力扣 189. 旋转数组 字符串
大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录189. 旋转数组示例 1:示例 2:说明:分析提交结果 189. 旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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
力扣leetcode 189. 旋转数组 java
class Solution { public void reverse(int[] arr, int i, int j) { while(i < j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; ...
leetcode 189. 旋转数组
leetcode 189. 旋转数组189. 旋转数组1. 题目描述2. 解题思路 189. 旋转数组 难度:简单 题库地址:https://leetcode-cn.com/problems/rotate-array/ 1. 题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7...
189. 旋转数组——来源力扣 (LeetCode)
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。 示例 1: 输入: [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] 方法 1:暴力(例1就是旋转三次) 最简单的方法是...
leetcode 189.旋转数组
leetcode 189.旋转数组 题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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:...
【leetcode】189. 旋转数组( Rotate Array )
题目描述 【leetcode】189. 旋转数组( Rotate Array ) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的 原地 算法。 第一次解答 思路: 题意是把数组nums向右平移k次,超出边界的部分从数组首插入。 简单的方法是按部就班的平移1次...
leetcode189---旋转数组
leetcode189—旋转数组 一、题目描述 给定一个数组,将数组中的元素向右移动kkk个位置,其中 kkk 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1)O(1)O(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,6] 向右旋转 2 步: [6,7,1,2,3,4,
[Leetcode] 力扣189:旋转数组
思路 尽量在原数组上操作,引用官方题解下面的热评 方法 三次reverse操作,注意先对k取余处理,另外注意STL的迭代器end指向的是最后一个元素的下一个位置 class Solution { public: void rotate(vector<int>& nums, int k) { int n = nums.size(); k %= n; reverse(nums.begin(), nums.end()); .
Leetcode 189.旋转数组
Leetcode 189.旋转数组 旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋
1601



被折叠的 条评论
为什么被折叠?



