//#189 Rotate Array
//24ms 100%
class Solution {
public:
void rotate(vector<int>& nums, int k)
{
if(nums.size() == 0 || nums.size() == 1) return;
k = k % nums.size();
if(k == 0) return;
bool right_shift(true);
if(k > int(nums.size()/2))
{
right_shift = false;
k = nums.size() - k;
}
vector<int> nums_copy = nums;
if(right_shift == true)
{
int i(k), j(0);
for(unsigned int m=0; m<nums.size(); m++)
{
nums[i] = nums_copy[j];
i --;
i = (i < 0) ? nums.size()+i : i;
int nj = i - k;
j = (nj < 0) ? nums.size()+nj : nj;
}
}
else
{
int i(0), j(k);
for(unsigned int m=0; m<nums.size(); m++)
{
nums[i] = nums_copy[j];
i ++;
i = (i >= int(nums.size())) ? i-nums.size() : i;
int nj = i + k;
j = (nj >= int(nums.size())) ? nj-nums.size() : nj;
}
}
return;
}
};
[Leetcode]#189 Rotate Array
最新推荐文章于 2024-08-05 23:05:28 发布