Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7]
is rotated to [5,6,7,1,2,3,4]
.
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
Solution 1:
public void rotate(int[] nums, int k) { int n = nums.length; if(n == 0) return; k %= n; if(k == 0) return; reverse(nums, 0, n-k-1); reverse(nums, n-k, n-1); reverse(nums, 0, n-1); } private void reverse(int[] nums, int start, int end) { for(int i=start; i<=(start+end)/2; i++) { swap(nums, i, start+end-i); } } private void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; }
Solution 2:
public void rotate(int[] nums, int k) { int n = nums.length; if(n == 0) return; k %= n; int d = n - k; //右移K位等于左移N-K位 for(int i=0; i<gcd(d, n); i++) { int tmp = nums[i]; int j = i; while(true) { int x = j + d; if(x >= n) { x -= n; } if(x == i) break; nums[j] = nums[x]; j = x; } nums[j] = tmp; } } private int gcd(int a, int b) { while(b!=0) { int tmp = b; b = a % b; a = tmp; } return a; }
Reference:
相关推荐
1. Rotate Array in Java 数组旋转是一个基本的数组操作,要求将数组中的元素旋转一定的位置。这种操作可以使用Java的System.arraycopy()方法或手动循环实现。 2. Evaluate Reverse Polish Notation 逆波兰表示法...
Rotate Array (旋转数组) #数组 33. Search in Rotated Sorted Array(搜索旋转排序数组)#数组 2020/12/08 19. Remove Nth Node From End of List(删除链表的倒数第N个节点) 153. Find Minimum in Rotated Sorted...
189.rotate-array.js /* * @lc app=leetcode id=189 lang=javascript * * [189] Rotate Array * * https://leetcode.com/problems/rotate-array/description/ * * algorithms * Easy (28.74%) * Total Accepted: 262...
leetcode 浇花力扣解决方案 简单的 #0001 - Two Sum #0007 - Reverse Integer #0009 - Palindrome Number #0035 - Search Insert Position #0058 - Length of Last Word #0066 - Plus One #0083 - Remove Duplicates...
Rotate Image (M) -> 2 73. Set Matrix Zeroes (M) 1. Two Sum (E) 167. Two Sum II - Input array is sorted (E) 653. Two Sum IV - Input is a BST (E) -> 2 26. Remove Duplicates from Sorted Array (E) 27. ...
旋转图像](./Array/rotate-image.md) Heap 堆 [0023 合并K个排序链表](./Heap/merge-k-sorted-lists.md) String 字符串 [0006 Z字形变换](./String/zigzag-conversion.md) [0030 串联所有单词的子串](./String/...
标题“_leetcode-python.pdf”所指的知识点: 该标题表明此文件是一份关于LeetCode的Python解题集。LeetCode是一个面向程序员的在线编程题库,提供各种编程语言的算法和数据结构题目,用于帮助编程者提升技能,尤其...
### LeetCode-CPP刷题知识点概述 #### 一、引言 《LeetCode-CPP刷题》是一本针对程序员面试及算法训练的书籍,由戴方勤编著,旨在帮助读者提升解决算法问题的能力,特别是在准备北美乃至全球范围内技术公司的面试时...
leetcode中国大批 0. Count Prime 1. Reverse the array 2. Find the maximum and minimum element in an array 3. Find the "Kth" max and min element of an array 4. Given an array which consists of only 0, 1...
leetcode中国Final450_数据结构 实际上,这个存储库包含成为优秀竞争程序员最重要的数据结构和算法。 他们的名字是: Questions ----------- *Reverse the array *Find the maximum and minimum element in an array...
3. **数组旋转**:如“旋转数组”(Rotate Array),需要对数组进行特定步数的逆时针或顺时针旋转。 4. **滑动窗口**:在数组中使用滑动窗口进行统计,如“最长连续序列”(Longest Consecutive Sequence)。 5. *...
- **字符串旋转(Rotate String)**: 将字符串进行旋转操作。 - **反转单词(Reverse Words)**: 将字符串中的单词顺序反转。 - **验证回文字符串(Valid Palindrome)**: 判断一个字符串是否是回文。 - **最长回文子串...
189.rotate-array 283.move-zero Range Sum Query - Immutables 66.Plus One 快手-跳格子 Intersection of Two Arrays 17.10. Find Majority Element LCCI Game of Life Find All Numbers Disappeared in an Array ...
462 | [Minimum Moves to Equal Array Elements II](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [C++](./C++/minimum-moves-to-equal-array-elements-ii.cpp) [Python](./Python/...
LeetCode中的这类问题涵盖了排序、查找、反转等操作,如“两数之和”(Two Sum)、“旋转数组”(Rotate Array)和“合并两个有序链表”(Merge Two Sorted Lists)。 2. **栈和队列**:这两种线性结构在处理逆序...
RotateList LeetCode 75 Sort Colors LeetCode 125 Valid Palindrome LeetCode 167 Two Sum II - Input array is sorted LeetCode 344 Reverse String LeetCode 345 Reverse Vowels of a String 2 字符串 编号 题目 ...
- Rotate String(旋转字符串) - Reverse Words in a String(反转字符串中的单词) - Valid Palindrome(回文字符串验证) - Longest Palindromic Substring(最长回文子串) - Space Replacement(URL化) ...
java lru leetcode :ice_cream: LeetCode Kindem 的个人 LeetCode 题解仓库,欢迎交流学习。 下面的目录中 ...Rotate Image 53 Maximum Subarray 55 Jump Game 56 Merge Intervals 64 Minimum Path Sum 73
rotate: A Linear Time Majority Vote Algorithm 题解: Maximum Gap: Something about largest-rectangle-in-histogram: 最长递增子序列: 最长公共自序列: Something about: best time to buy and sell stack: ...
- **Rotate List**:将链表顺时针旋转指定次数。 - **Reorder List**:按照特定规则重新排列链表。 - **Partition List**:将链表按值分割成两个部分。 - **Add Two Numbers**:两个非负整数相加,结果存储在...