# 有序数组的平方
前言 : 这题算是第二次写了 记的还是比较清楚的 第一次写肯定想着暴力写法 先平方再排序 后面想明白了就知道 从两边开始比较 因为这个数组是有序的 大的一定在两边 所以新的数组从两边开始
# 题目
给你一个按 非递减顺序 排序的整数数组
nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:
1
2
3
4 输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]示例 2:
1
2 输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]提示:
1 <= nums.length <= 104-104 <= nums[i] <= 104nums已按 非递减顺序 排序
# 题解
1 | public class Solution { |
这里叭叭一下 我写题的心路历程吧 因为是写过的 所以知道从两头开始算 但奈何还是犯傻了 size 居然从 0 开始 因为两边必然有一方是最大的 所以 肯定啊 新数组从右边开始填充就是错的啊 结果会变成 直接平方的顺序啦。
这里我感觉还能优化一下空间复杂度 不需要有一个新的数组 直接覆盖试试
好嘞 虽然时间不够 但试试看
(你要时间多也不会花小半天弄没用的博客。。。工作还做不做了?)
(QwQ 我是真把自己当黑奴了啊)
然后就有了下面的想法
1 | public class Solution { |
很好 very good

image-20240405143814891