比如数组轮转问题
LeetCode189.给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
/**
* 数组轮转问题
*/
public static String rotate(int[] arr, int k){
k %= arr.length;
reverse(arr, 0, arr.length - 1);
reverse(arr, 0, k - 1);
// 防止k等于数组长度时数组会重新再次旋转一遍
if(k - 1 != -1) {
reverse(arr, k, arr.length - 1);
}
return Arrays.toString(arr);
}
public static void reverse(int[] arr, int start, int end){
while(start < end){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start += 1;
end -= 1;
}
}