1.有序数组的平方
int* sortedSquares(int* nums, int numsSize, int* returnSize){
*returnSize=numsSize;
//返回数组的大小为原来数组的大小
int low=0;
int high=numsSize-1;
//创建两个指针,low指向数组的第一位元素,high指向数组的最后一位元素
int* ans=(int*)malloc(sizeof(int)*numsSize);
//最后要返回的结果数组
int index;
//暴力排序
for( index=numsSize-1;index>=0;index--){
int lowSquare=nums[low]*nums[low]; //存储最低位的平方值
int highSquare=nums[high]*nums[high]; //存储最高位的平方值
if(lowSquare>highSquare){ //若低位平方大于高位平方
ans[index]=lowSquare; //则将低位平方值存入结果数组的最后一位
low++; //低位右移
}
else{
ans[index]=highSquare;
high--;
}
}
return ans; //返回结果数组
}
2.轮转数组
void rotate(int* nums, int numsSize, int k){
int ans[numsSize]; //构造辅助数组
for (int i = 0; i < numsSize; ++i) {
ans[(i + k) % numsSize] = nums[i]; //取余,先赋值后K位,再赋值前numsSize-k位
}
for (int i = 0; i < numsSize; ++i) {
nums[i] = ans[i];
}
}