题目描述:
给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]
提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums
已按 非递减顺序 排序
代码:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* sortedSquares(int* nums, int numsSize, int* returnSize){
* returnSize=numsSize;
int right =numsSize-1;
int left=0;
int *ans=(int*)malloc(sizeof(int)*numsSize);
for(int j=numsSize-1;j>=0;j--){
int l=nums[left]*nums[left];
int r=nums[right]*nums[right];
if(l>r){
ans[j]=l;
left++;
}
else {
ans[j]=r;
right--;
}
}
return ans;
}
“* returnSize=numsSize;”这行代码要写上,如果不写的话就会出现下面的情况:
看完这个结果,你会觉得很好笑,只返回了个‘]’……这应该是没写返回的大小,额,反正这样写就对了(嘿嘿)
这道题呢利用的方法是双指针法,这个方法很实用,往后有用得到的时候。
终于写好了,收工!!!