Rotate Array of LeetCode Problem Solution

1. Description of the topic

2. Code

 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     }

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325814113&siteId=291194637