diff --git a/solution/0100-0199/0189.Rotate Array/README.md b/solution/0100-0199/0189.Rotate Array/README.md index fda594571fd5a..e0d81527160be 100644 --- a/solution/0100-0199/0189.Rotate Array/README.md +++ b/solution/0100-0199/0189.Rotate Array/README.md @@ -136,6 +136,34 @@ var rotate = function (nums, k) { }; ``` +使用三次数组翻转 + 双指针实现翻转 + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {void} Do not return anything, modify nums in-place instead. + */ +var rotate = function (nums, k) { + k %= nums.length; + // 使用三次数组翻转 + reverse(nums, 0, nums.length - 1); + reverse(nums, 0, k - 1); + reverse(nums, k, nums.length - 1); + +}; +function reverse(nums, start, end) { + // 双指针实现翻转 + while (start < end) { + const temp = nums[start]; + nums[start] = nums[end]; + nums[end] = temp; + start += 1; + end -= 1; + } +} +``` + ### **Go** ```go diff --git a/solution/0100-0199/0189.Rotate Array/README_EN.md b/solution/0100-0199/0189.Rotate Array/README_EN.md index 9de3231f23286..bcefe1ecc839b 100644 --- a/solution/0100-0199/0189.Rotate Array/README_EN.md +++ b/solution/0100-0199/0189.Rotate Array/README_EN.md @@ -99,6 +99,8 @@ class Solution { ### **JavaScript** + the elements in the range `k~n-1` of the array to the front with the native API. + ```js /** * @param {number[]} nums @@ -111,6 +113,34 @@ var rotate = function (nums, k) { }; ``` +Use three array reverses implemented by double pointers + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {void} Do not return anything, modify nums in-place instead. + */ + var rotate = function (nums, k) { + k %= nums.length; + // Use three array reverses + reverse(nums, 0, nums.length - 1); + reverse(nums, 0, k - 1); + reverse(nums, k, nums.length - 1); + +}; +function reverse(nums, start, end) { + // reverse implemented by double pointers + while (start < end) { + const temp = nums[start]; + nums[start] = nums[end]; + nums[end] = temp; + start += 1; + end -= 1; + } +} +``` + ### **Go** ```go