189. Rotate Array
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array <code>[1,2,3,4,5,6,7]</code> is rotated to <code>[5,6,7,1,2,3,4]</code>.
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
題目大意:
将數組整體向右移動k位,多出來的移到數組前面。
思路:
用一個新數組來替換它即可。
代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<code>class</code> <code>Solution {</code>
<code>public</code><code>:</code>
<code> </code><code>void</code> <code>rotate(vector<</code><code>int</code><code>>& nums, </code><code>int</code> <code>k) {</code>
<code> </code><code>if</code><code>(k == 0 || nums.size() == 1 || nums.size() == 0)</code>
<code> </code><code>return</code><code>;</code>
<code> </code><code>if</code><code>(k > nums.size())</code>
<code> </code><code>k = k % nums.size();</code>
<code> </code><code>int</code> <code>i,count;</code>
<code> </code><code>count = 0;</code>
<code> </code><code>i = nums.size() - k;</code>
<code> </code><code>vector<</code><code>int</code><code>> tmp;</code>
<code> </code><code>while</code><code>(count != nums.size() )</code>
<code> </code><code>{</code>
<code> </code><code>if</code><code>(i >= nums.size() )</code>
<code> </code><code>{</code>
<code> </code><code>i -= nums.size();</code>
<code> </code><code>}</code>
<code> </code><code>tmp.push_back(nums[i]);</code>
<code> </code><code>i++;</code>
<code> </code><code>count++;</code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>nums.swap(tmp);</code>
<code> </code><code>}</code>
<code>};</code>
<code></code>
本文轉自313119992 51CTO部落格,原文連結:http://blog.51cto.com/qiaopeng688/1837128