1、题目描述
2、代码
1 void rotate(vector<int>& nums, int k) { 2 3 if( k == 0) 4 return ; 5 if( k % nums.size() == 0 && (k / nums.size()) % 2 == 0 ) 6 reverse( nums.begin(), nums.end() ); 7 8 9 k %= nums.size() ; 10 11 vector<int> ans; 12 auto rb = nums.rbegin(); 13 stack<int> s; 14 for( int i = k; i > 0; i--,rb++) 15 { 16 s.push(*rb); 17 } 18 19 while( !s.empty() ) 20 { 21 int tmp = s.top(); 22 ans.push_back(tmp); 23 s.pop(); 24 25 } 26 auto b = nums.begin(); 27 for( int j = 0; j < nums.size() - k; j++,b++) 28 { 29 ans.push_back(*b); 30 } 31 copy(ans.begin(),ans.end(),nums.begin()); 32 33 }