【力扣】189. 旋转数组
发布日期:2021-06-29 19:44:17
浏览次数:3
分类:技术文章
本文共 1044 字,大约阅读时间需要 3 分钟。
题目:给定一个数组,将数组中的元素向右移动 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 步: [99,-1,-100,3] 向右旋转 2 步: [3,99,-1,-100]说明:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。要求使用空间复杂度为 O(1) 的 原地 算法。
class Solution { public void rotate(int[] nums, int k) { if(nums.length == 1) return; k %= nums.length; int j = nums.length - k, temp; for(int i = 0; i < j / 2; i++){ temp = nums[i]; nums[i] = nums[j - i - 1]; nums[j - i - 1] = temp; } for(int i = j; i < (nums.length + j) / 2; i++){ temp = nums[i]; nums[i] = nums[nums.length - 1 + j - i]; nums[nums.length - 1 + j - i] = temp; } for(int i = 0; i < nums.length / 2; i++){ temp = nums[i]; nums[i] = nums[nums.length - i - 1]; nums[nums.length - i - 1] = temp; } }}
转载地址:https://darkness.blog.csdn.net/article/details/104083945 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月22日 10时39分10秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()
2019-04-30
移植Qt4.7.3
2019-04-30
Qt移植对USB鼠标键盘、触摸屏的支持
2019-04-30
LCD驱动移植
2019-04-30
驱动开发小结
2019-04-30
Qt Creator创建纯C、c++工程
2019-04-30
Android单元测试之 Robolectric3.0+
2019-04-30
qt configure参数解释
2019-04-30
Git Push 避免用户名和密码方法
2019-04-30
Java总结篇系列:Java多线程(一)
2019-04-30
产品设计开发要领
2019-04-30
Android线程操作类(暂停、重新开启、停止)
2019-04-30
android - JNI - 一维数组、二维数组的访问与使用
2021-07-03
在 Android Studio 2.2 中愉快地使用 C/C++
2021-07-03
C++和JNI的数据转换
2021-07-03
JNI 传递结构体参数
2021-07-03
JNI中枚举类型作为参数
2021-07-03
qlineedit tab焦点处无法输入问题
2021-07-03
android精确绘制文字位置的方法
2021-07-03
Android中UI线程与后台线程交互设计的5种方法
2021-07-03