算法每日一题笔记 —— 977.有序数组的平方

1,236 阅读1分钟

题目链接:

leetcode.cn/problems/sq…

题目描述:

20240229211114

解答:

两种解法均手打了一遍:

方法一:直接排序

vector<int> sortedSquares(vector<int>& nums) {
    int size = nums.size();
    for(int i = 0; i < size; i++) {
        nums[i] = nums[i] * nums[i];
    }

    sort(nums.begin(), nums.end());

    return A;
}

方法二:双指针

vector<int> sortedSquares(vector<int>& nums) {
    int size = nums.size();
    int i = 0;
    int j = size - 1;
    int pos = size - 1;
    vector<int> ans(size,0);
    while(i <= j) {
        if(nums[i] * nums[i] < nums[j] * nums[j]) {
            ans[pos] = nums[j] * nums[j];
            j--;
        } else {
            ans[pos] = nums[i] * nums[i];
            i++;
        }

        pos--;
    }

    return ans;
}