C语言双指针法解决-有序数组的平方

 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */


int cmp(const void * a, const void * b){
    return (*(int*)a) - (*(int*)b);
}



int* sortedSquares(int* nums, int numsSize, int* returnSize){

    // 使用双指针法

    int left = 0;
    int right = numsSize - 1;

    int* newList = (int*)malloc(numsSize*sizeof(int));

    int k = numsSize - 1;

    while (k>=0){
        if (nums[left]*nums[left] > nums[right] * nums[right]){
            newList[k] = nums[left]*nums[left];
            left++;
        }
        else{
            newList[k] = nums[right]*nums[right];
            right--;
        }
        k--;
    }

    * returnSize = numsSize;
    return newList;


}

 

posted @ 2023-09-26 17:35  朵朵奇fa  阅读(12)  评论(0编辑  收藏  举报