We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
原题链接:https://leetcode-cn.com/problems/rotate-array/
解题思路:
建议参考漫画:三次旋转的方法是如何想到的,这样思路会比单纯看文字清晰很多。
/** * @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. // 此时需要按照k % nums.length进行翻转,因此需要增加处理。 k = k % nums.length; // 翻转链表函数,将start到end的值进行翻转 function reverse(arr, start, end) { // 当end指针小等于start的时候停止循环。 while (start < end) { // 使用双指针,每次循环将两个指针的值调换。 let temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; // 调换完成之后,将两个指针向内移动。 start++; end--; } } // 第一次将整个数组翻转,此时数组的前后部分对调了位置。 // [1,2,3,4,5,6,7]变成了[7,6,5,4,3,2,1] reverse(nums, 0, nums.length - 1); // 第二次翻转0到k-1的部分 // [7,6,5,4,3,2,1]变成了[5,6,7,4,3,2,1] reverse(nums, 0, k - 1); // 第二次翻转0到k-1的部分 // [5,6,7,4,3,2,1]变成了[5,6,7,1,2,3,4] reverse(nums, k, nums.length - 1); };
The text was updated successfully, but these errors were encountered:
No branches or pull requests
原题链接:https://leetcode-cn.com/problems/rotate-array/
解题思路:
建议参考漫画:三次旋转的方法是如何想到的,这样思路会比单纯看文字清晰很多。
The text was updated successfully, but these errors were encountered: