leetcode Rotate Array【数组】
题目链接:https://leetcode.com/problems/rotate-array/
1 /*题意:将数组向右旋转k个位置*/ 2 3 /* 4 *三次翻转数组,第一次翻转整个数组,第二次翻转前k个数,第三次翻转剩下的数 5 *第一次翻转:7,6,5,4,3,2,1 6 *第二次翻转:5,6,7,4,3,2,1 7 *第三次翻转:5,6,7,1,2,3,4 8 * 9 *时间复杂度,空间复杂度都为O(n) 10 */ 11 12 class Solution { 13 public: 14 void rotate(int nums[], int n, int k) { 15 k = k%n; //一定要注意,k可能比n大 16 reverse(nums, 0, n-1); 17 reverse(nums, 0, k-1); 18 reverse(nums, k, n-1); 19 } 20 void reverse(int A[], int s, int e) { 21 while(s < e) { 22 swap(A[s], A[e]); 23 s ++; 24 e --; 25 } 26 } 27 28 };