Skip to content

Commit 73b8655

Browse files
authored
feat: add js solution to lc problem: No.0189 (#712)
No.0189.Rotate Array
1 parent 9cf3a0f commit 73b8655

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

solution/0100-0199/0189.Rotate Array/README.md

+28
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,34 @@ var rotate = function (nums, k) {
136136
};
137137
```
138138

139+
使用三次数组翻转 + 双指针实现翻转
140+
141+
```js
142+
/**
143+
* @param {number[]} nums
144+
* @param {number} k
145+
* @return {void} Do not return anything, modify nums in-place instead.
146+
*/
147+
var rotate = function (nums, k) {
148+
k %= nums.length;
149+
// 使用三次数组翻转
150+
reverse(nums, 0, nums.length - 1);
151+
reverse(nums, 0, k - 1);
152+
reverse(nums, k, nums.length - 1);
153+
154+
};
155+
function reverse(nums, start, end) {
156+
// 双指针实现翻转
157+
while (start < end) {
158+
const temp = nums[start];
159+
nums[start] = nums[end];
160+
nums[end] = temp;
161+
start += 1;
162+
end -= 1;
163+
}
164+
}
165+
```
166+
139167
### **Go**
140168

141169
```go

solution/0100-0199/0189.Rotate Array/README_EN.md

+30
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ class Solution {
9999

100100
### **JavaScript**
101101

102+
the elements in the range `k~n-1` of the array to the front with the native API.
103+
102104
```js
103105
/**
104106
* @param {number[]} nums
@@ -111,6 +113,34 @@ var rotate = function (nums, k) {
111113
};
112114
```
113115

116+
Use three array reverses implemented by double pointers
117+
118+
```js
119+
/**
120+
* @param {number[]} nums
121+
* @param {number} k
122+
* @return {void} Do not return anything, modify nums in-place instead.
123+
*/
124+
var rotate = function (nums, k) {
125+
k %= nums.length;
126+
// Use three array reverses
127+
reverse(nums, 0, nums.length - 1);
128+
reverse(nums, 0, k - 1);
129+
reverse(nums, k, nums.length - 1);
130+
131+
};
132+
function reverse(nums, start, end) {
133+
// reverse implemented by double pointers
134+
while (start < end) {
135+
const temp = nums[start];
136+
nums[start] = nums[end];
137+
nums[end] = temp;
138+
start += 1;
139+
end -= 1;
140+
}
141+
}
142+
```
143+
114144
### **Go**
115145

116146
```go

0 commit comments

Comments
 (0)