简单版
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> re(nums.size(),0);
for(int i = 0 ;i<nums.size();++i){
re[i] = nums[i]*nums[i];
}
sort(re.begin(), re.end());
return re;
}
};
双指针版
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
vector<int> re(n,0);
int st = 0;
int ed = n - 1;
int pos = n - 1;
while(st<=ed){
if(nums[st]*nums[st]<nums[ed]*nums[ed]){
re[pos] = nums[ed]*nums[ed];
ed--;
}else{
re[pos] = nums[st]*nums[st];
st++;
}
pos--;
}
return re;
}
};
简单版
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
vector<int> re(n,0);
for(int i=0;i<n;++i){
re[(i+k)%n] = nums[i];
}
nums = re;
}
};
双指针版
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
k = k % n;
int count = gcd(k, n);//最大公因数
for(int c=0;c<count;++c){
int st = c;
int ed = (st + k)%n;
int temp = nums[st];
do{
int ed = (st+k)%n;
swap(nums[ed],temp);
st = ed;
}while(st!=c);
}
}
};