数组——有序数组的平方

文章目录

题目顺序:代码随想录算法公开课,b站上有相应视频讲解

一、题目

977. Squares of a Sorted Array

Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.

Example 1:

Input: nums = [-4,-1,0,3,10]

Output: [0,1,9,16,100]

Explanation: After squaring, the array becomes [16,1,0,9,100].

After sorting, it becomes [0,1,9,16,100].

Example 2:

Input: nums = [-7,-3,2,3,11]

Output: [4,9,9,49,121]

Constraints:

1 <= nums.length <= 104

-104 <= nums[i] <= 104

nums is sorted in non-decreasing order.

Follow up: Squaring each element and sorting the new array is very trivial, could you find an O(n) solution using a different approach?

题目来源: leetcode

二、题解

排序写法

cpp 复制代码
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int n = nums.size();
        for(int i = 0;i < n;i++){
            nums[i] = nums[i] * nums[i];
        }
        sort(nums.begin(),nums.end());
        return nums;
    }
};

双指针写法

cpp 复制代码
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int n = nums.size();
        vector<int> res(n,0);
        int index = n - 1;
        for(int i = 0,j = n - 1;i <= j;){
            if(nums[i] * nums[i] > nums[j] * nums[j]){
                res[index--] = nums[i] *nums[i];
                i++;
            }
            else{
                res[index--] = nums[j] * nums[j];
                j--;
            }
        }
        return res;
    }
};
相关推荐
季远迩几秒前
73.矩阵置零(中等)
算法
做一个码农都是奢望1 分钟前
计算机控制系统课程CH3:数字控制系统闭环响应分析与 MATLAB 实现
人工智能·算法·matlab
爱玩亚索的程序员8 分钟前
算法入门(三)学会用matplotlib画图
算法·matplotlib
一叶落4388 分钟前
LeetCode 6. Z 字形变换(C语言详解)
c语言·数据结构·算法·leetcode
啊董dong10 分钟前
noi-2026年3月17号作业
数据结构·c++·算法
也曾看到过繁星18 分钟前
初识c++
开发语言·c++
2401_8747325329 分钟前
泛型编程与STL设计思想
开发语言·c++·算法
季远迩34 分钟前
54.螺旋矩阵(中等)
算法
今儿敲了吗39 分钟前
44| 汉诺塔问题
数据结构·c++·笔记·学习·算法·深度优先
yuyuzururu42 分钟前
进程通信实验报告
c++