刷题日记Day2
977 有序数组的平方
链接:https://leetcode.cn/problems/squares-of-a-sorted-array/description/
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
思路:分三种情况
-1. 全正,直接返回原数组平方
-2. 全负,返回原数组平方的逆序
-3. 有正有负
(1)寻找中间点位(绝对值从小变大的起点或者相邻乘积<=0的位置)
(2)左指针为mid-1 ,右指针为mid + 1
(3) 转换为两个有序数组合并问题
(4) 注意点:等其中一个结束后要把未结束的那个剩余的数字全部追加到最后
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
snums = [num * num for num in nums]
if nums[0] >= 0:
return snums
elif nums[-1] <=0:
return list(reversed(snums))
mid = 0
for i in range(len(nums)-1):
if (nums[i] * nums[i+1])<=0:
if abs(nums[i]) < nums[i+