Java实现 LeetCode 189 旋转数组
2023-09-14 08:58:06 时间
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 步: [99,-1,-100,3]
向右旋转 2 步: [3,99,-1,-100]
说明:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
要求使用空间复杂度为 O(1) 的 原地 算法。
class Solution {
public void rotate(int[] nums, int k) {
int n = nums.length;
k %= n;
reverse(nums, 0, n - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, n - 1);
}
private void reverse(int[] nums, int start, int end) {
while (start < end) {
int temp = nums[start];
nums[start++] = nums[end];
nums[end--] = temp;
}
}
}
相关文章
- java中数组转列表_Java数组转list
- java对象组声明_如何在Java中声明对象数组?
- java二维数组试题_Java二维数组及习题总结
- java打印数组_Java中打印数组的三种方式
- java数组排序去重_JAVA数组去重排序
- Java服务器端结构[通俗易懂]
- 我的世界java版需要多少钱_我的世界Java版20w49a快照版[通俗易懂]
- java循环语句_Java中的循环语句
- java extends runtimeexception_Java中RuntimeException和Exception的区别
- JAVA中StringBuilder学习
- java session id 生成_Java通过sessionId获取Session「建议收藏」
- java代码是怎么运行的_java代码是什么
- 【说站】java虚拟机中栈的运行原理
- 【测开技能】Java语言系列(五) 浮点数运算
- java socket详解_Java Socket 编程原理及教程「建议收藏」
- Java 如何优雅的在循环中删除元素
- java 的序列化和反序列化的问题详解编程语言
- java中Integer,String判断相等与integer的比较大小详解编程语言
- 删除Linux中的Java程序(linux删除java)
- 应用『Java应用程序中Redis缓存的使用』(redis缓存与java)
- 如何在Linux系统下成功安装Java?(linux下安装java)
- 一起学习Java的Oracle包(java的oracle包)
- java取两个字符串的最大交集