Skip to content

Commit 47303a3

Browse files
Update 189. 轮转数组.md
1 parent ed655e1 commit 47303a3

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

Methodology/189. 轮转数组.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
另外,如果是 **向左轮转**,则是先反转整个数组,再各自反转 `[0, n - 1 - (k mod n)]``[n - (k mod n), n - 1]`
4848

4949
```Java
50+
// Java
5051
class Solution {
5152
public void rotate(int[] nums, int k) {
5253
int n = nums.length;
@@ -66,4 +67,36 @@ class Solution {
6667
}
6768
}
6869
}
70+
```
71+
72+
```go
73+
// Go
74+
func rotate(nums []int, k int) {
75+
n := len(nums)
76+
reverse(nums, 0, n - 1 - k)
77+
reverse(nums, n - k, n - 1)
78+
reverse(nums, 0, n - 1)
79+
}
80+
81+
func reverse(nums []int, left, right int) {
82+
for ;left < right; {
83+
nums[left], nums[right] = nums[right], nums[left]
84+
left++
85+
right--
86+
}
87+
}
88+
```
89+
90+
方法二:额外数组
91+
92+
```go
93+
func rotate(nums []int, k int) {
94+
n := len(nums)
95+
arr := make([]int, n)
96+
k = k % n
97+
for index := range nums {
98+
arr[index] = nums[(n - k + index) % n]
99+
}
100+
copy(nums, arr)
101+
}
69102
```

0 commit comments

Comments
 (0)