Skip to content

Commit d3e1f92

Browse files
committed
modify code
1 parent 3391b60 commit d3e1f92

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

src/topinterviewquestions/Problem_0189_RotateArray.java

+40-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public class Problem_0189_RotateArray {
44

5-
public void rotate(int[] nums, int k) {
5+
public void rotate1(int[] nums, int k) {
66
int N = nums.length;
77
k = k % N;
88
reverse(nums, 0, N - k - 1);
@@ -18,4 +18,43 @@ public static void reverse(int[] nums, int L, int R) {
1818
}
1919
}
2020

21+
public static void rotate2(int[] nums, int k) {
22+
int N = nums.length;
23+
k = k % N;
24+
if (k == 0) {
25+
return;
26+
}
27+
int L = 0;
28+
int R = N - 1;
29+
int lpart = N - k;
30+
int rpart = k;
31+
int same = Math.min(lpart, rpart);
32+
int diff = lpart - rpart;
33+
exchange(nums, L, R, same);
34+
while (diff != 0) {
35+
if (diff > 0) {
36+
L += same;
37+
lpart = diff;
38+
} else {
39+
R -= same;
40+
rpart = -diff;
41+
}
42+
same = Math.min(lpart, rpart);
43+
diff = lpart - rpart;
44+
exchange(nums, L, R, same);
45+
}
46+
}
47+
48+
public static void exchange(int[] nums, int start, int end, int size) {
49+
int i = end - size + 1;
50+
int tmp = 0;
51+
while (size-- != 0) {
52+
tmp = nums[start];
53+
nums[start] = nums[i];
54+
nums[i] = tmp;
55+
start++;
56+
i++;
57+
}
58+
}
59+
2160
}

0 commit comments

Comments
 (0)