type
status
date
slug
summary
tags
category
icon
password
前言:
我唱这么走心 却走不进你心里
📝 主旨内容
1 题目
给你一个按 非递减顺序 排序的整数数组 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]
2 思路
双指针法
数组其实是有序的, 只不过负数平方之后可能成为最大数了。
那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。
此时可以考虑双指针法了,i指向起始位置,j指向终止位置。
定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置。
如果
A[i] * A[i] < A[j] * A[j]
那么result[k--] = A[j] * A[j];
。如果
A[i] * A[i] >= A[j] * A[j]
那么result[k--] = A[i] * A[i];
。如动画所示:
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5e49b5e4-075e-4c19-9f33-10946bcb60fd%2FUntitled.png?table=block&id=a11f3684-3532-416d-9181-0364c5cb13be)
🤗 题解
📎 参考文章
- 代码随想录
记得写returnSize~
- 作者:MasterYe
- 链接:https://www.masterye.xyz//article/leetcode-3
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。