977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 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]
两法:左右指针;内置函数
内置函数:
时间复杂度O ( N + N log N ) O(N + N\log N)O(N+NlogN) 遍历数组进行平方 + python默认使用快排
空间复杂度 O ( N ) O(N)O(N):返回的数组
左右指针:
时间复杂度O ( N ) O(N)O(N) 两指针遍历一次数组即可
空间复杂度 O ( N ) O(N)O(N):返回的数组
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
# return self.func1(nums)
return self.double_pointer(nums, len(nums))
def func1(self, nums) -> list:
# n + nlogn
square_lst = [num ** 2 for num in nums]
return sorted(square_lst)
def double_pointer(self, nums, length) -> list:
low, high, cur = 0, length - 1, length - 1
res_lst = [0] * length
while low <= high:
low_square, high_square = nums[low]**2, nums[high]**2
if low_square <= high_square:
res_lst[cur] = high_square
high -= 1
else:
res_lst[cur] = low_square
low += 1
cur -= 1
return res_lst
版权声明:本文为weixin_42810939原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。