/**
* 旋转数组:将数组的后 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];
}
}
}
相关推荐
56-FMC连接器电路设计
FMC连接器电路设计
力扣【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
以ATT&CK为例构建网络安全知识图
随着攻击工具、方法的逐渐升级和复杂化,安全数据的大规模融合,攻防对抗愈加激烈。安全团队如何在浩瀚数据中有效发现高级威胁的蛛丝马迹,如何把网络安全专家的经验、知识有效转化为可复制可扩展的数据分析能力,如何将对抗高级威胁的“炼金术”逐步升级为科学淘金指南,如何将安全从业者从繁重的体力劳动中解放出来,愈发成为安全能力亟需突破的难点和重点,也是我们正在探索的方向。正如医疗行业中治疗疑难杂症依赖医疗专家,网络空间高级威胁的防护和处置也依赖安全专家的经验与知识。
力扣189.旋转数组
力扣189.旋转数组解法一解法二解法三 三种解法,解法一很容易想到,后两种解法比较巧妙,在这里记录一下。 解法一 每次将数组每一位向后挪动一位,挪动k%nums.length次(k%nums.length是因为挪动nums.length的倍数次相当于没有挪动) //时间复杂度:O(kn) //空间复杂度:O(1) class Solution { public void rotate(in...
【软考】数据库系统工程师备考指南(一)
目录一、数据库系统工程师简介二、考试要求三、考试目标四、考试范围(一)信息系统知识(二)数据库系统设计与管理 一、数据库系统工程师简介 数据库系统工程师考试属于全国计算机技术与软件专业技术资格(水平)考试(简称计算机软件水平资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。笔试安排在一天之内。 2022 年数据库系统工程
HDR 成像技术学习(三)—— LOFIC
LOFIC(Lateral Overflow Integration Capacitor,横向溢出集合电容)介绍,从像素结构到工作时序。
力扣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...
TC3XX - MCAL知识点(二十):CAN MCAL配置及代码实战(CAN/CANFD/extenen CAN)
CAN驱动程序负责提供AUTOSAR指定的标准CAN通信服务。M_CAN单元是底层的CAN硬件单元,它由共享消息RAM(在AUTOSAR中称为硬件对象)的节点(在AUTOSAR中称为控制器)组成。CAN驱动提供以下服务:·初始化CAN控制器以控制CAN控制器的行为和状态·设置和修改CAN控制器的波特率配置·支持CAN和CAN FD帧的收发·在轮询和中断模式下,成功的帧传输通知,专用和FIFO消息的接收和总线事件通知·数据接收使用接收FIFO功能·假装网络模式处理·支持多读/写周期功能。
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] 解释:
C#串口通信从入门到精通(11)——串口接收的数据存储到本地文件(txt、csv)
本文详细介绍如何将串口通信将数据进行本次存储,主要介绍常用的csv、txt格式文件,由多年实战经验总结,绝对干货!
SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析
SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析
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] ...
C#实现图片裁剪 (附完整源码)
C#实现图片裁剪 (附完整源码)
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] 题解: 方案...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
LeetCode第189题_旋转数组
给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
Leetcode189--旋转数组
Leetcode189–旋转数组(多种方法解题,python) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 编程语言:python 作者:黑暗主宰 邮箱:shengzhanhe@gmail.com 文章目录Leetcode189--旋转数组题目描述解题思路 Leetcode189–旋转数组 题目描述 原题链接: https://leetcode-cn.com/pr...
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] 解释: 向右旋
[LeetCode刷题]第189题 旋转数组
[LeetCode刷题]第189题 旋转数组(简单易懂,转置数组实现)一、读题二、解题思路1.计算需要旋转的次数2.根据移动位置转置数组2.1转置整体2.2转置前半部分2.3转置后半部分2.4换个方式呈现三、实现方式3.1 实现一个reverse3.2 进行转置四、完整代码五、相关链接 一、读题 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例1 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步:
4723



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



