48 lines
1.1 KiB
Java
48 lines
1.1 KiB
Java
|
package com.zerroi.leetcode.ThreeFive;
|
|||
|
|
|||
|
import java.util.Arrays;
|
|||
|
|
|||
|
/**
|
|||
|
* 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
|
|||
|
*/
|
|||
|
public class Rotate {
|
|||
|
public static void main(String[] args) {
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
class SolutionSecond {
|
|||
|
public void rotate(int[] nums, int k) {
|
|||
|
k = k % nums.length;
|
|||
|
int[] temp = new int[k];
|
|||
|
for (int i = 0; i < k; i++) {
|
|||
|
temp[i] = nums[nums.length - k + i];
|
|||
|
}
|
|||
|
|
|||
|
for (int i = nums.length - k; i >= 0; i--) {
|
|||
|
nums[i + k] = nums[i];
|
|||
|
}
|
|||
|
|
|||
|
for (int i = 0; i < k; i++) {
|
|||
|
nums[i] = temp[i];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void rotateReverse(int[] nums, int k) {
|
|||
|
k = k % nums.length;
|
|||
|
reverse(nums, 0, nums.length);
|
|||
|
reverse(nums, 0, k - 1);
|
|||
|
reverse(nums, k, nums.length);
|
|||
|
}
|
|||
|
|
|||
|
public void reverse(int[] nums, int start, int end) {
|
|||
|
while (start < end) {
|
|||
|
int temp = nums[start];
|
|||
|
nums[start] = nums[end];
|
|||
|
nums[end] = temp;
|
|||
|
start += 1;
|
|||
|
end -= 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|