189. Rotate Array

https://leetcode.com/problems/rotate-array/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Solution {
public void rotate(int[] nums, int k) {
k %= nums.length;
reverse(nums, 0, nums.length - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
}
public void reverse(int[] nums, int start, int end) {
while (start < end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start++;
end--;
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//my solution using linkedlist: too slow even accepted
// class Solution {
// public void rotate(int[] nums, int k) {
// int len=nums.length;
// if(k>len) k%=len;
// if(k==0) return;
// LinkedList<Integer> ls =new LinkedList<>();
// for(int i=0;i<len-k;i++) ls.add(nums[i]);
// for(int i=0;i<k;i++) ls.addFirst(nums[len-i-1]);
// // System.out.println(ls);
// // nums=new int[len];
// for(int i=0;i<len;i++){
// nums[i]=ls.get(i);
// }
// }
// }

0%