- 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。\
package com.qianfeng.day07;
//旋转数组
public class LeetCodeTest02 {
public static void main(String[] args) {
int[] arr = new int[] {1,2,3,4,5,6,7};
int k = 3;
rotate(arr, k);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void rotate(int[] nums, int k) {
int[] num = new int[nums.length];
//备份数组
for (int i = 0; i < num.length; i++) {
num[i] = nums[i];
}
//环状替换
for (int i = 0; i < nums.length; i++) {
nums[(i+k)%nums.length] = num[i];
}
}
}
算法思想
数组上面每一个旋转之后的位置都是原先的位置加上旋转次数然后对数组长度取余。