mirror of
https://github.com/ShusenTang/LeetCode.git
synced 2024-09-02 14:20:01 +00:00
Create 189. Rotate Array.md
This commit is contained in:
parent
227919fa70
commit
f62b9e251a
21
189. Rotate Array.md
Normal file
21
189. Rotate Array.md
Normal file
@ -0,0 +1,21 @@
|
||||
# [189. Rotate Array](https://leetcode.com/problems/rotate-array/description/)
|
||||
# 思路
|
||||
题意就是循环右移k步,如果仔细观察结果可知,结果相当于先对数组整体进行翻转,再对前k个元素和后面的元素分别进行翻转的结果。
|
||||
例如[1,2,3,4,5,6,7], k = 3:
|
||||
先整体翻转:[7,6,5,4,3,2,1];
|
||||
再对前3个元素翻转:[5,6,7,4,3,2,1];
|
||||
再对后面的元素翻转:【5,6,7,1,2,3,4]。
|
||||
时间复杂度O(n), 空间复杂度O(1)。
|
||||
# C++
|
||||
```
|
||||
class Solution {
|
||||
public:
|
||||
void rotate(vector<int>& nums, int k) {
|
||||
k %= nums.size(); // 注意先取模
|
||||
if(k == 0) return;
|
||||
reverse(nums.begin(), nums.end());
|
||||
reverse(nums.begin(), nums.begin() + k);
|
||||
reverse(nums.begin() + k, nums.end());
|
||||
}
|
||||
};
|
||||
```
|
Loading…
Reference in New Issue
Block a user