一道有意思的简单题:有序数组平方
题目就大概知道要做什么了,我一开始想的比较简单:
class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:res = []left, right = 0, len(nums)-1while right > left:if abs(nums[left]) > abs(nums[right]):res.insert(0, nums[left]**2)left += 1else:res.insert(0, nums[right]**2)right -= 1res.insert(0, nums[left]**2)return res
但是由于 python 的列表实现问题,insert 的执行速度比较慢,所以 leetcode 结果用了 200+ 时间比 99+% 的用户提交慢,太尴尬了
之后想了一下,试试先尾插再反转:
class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:res = []left, right = 0, len(nums)-1while right > left:if abs(nums[left]) > abs(nums[right]):res.append(nums[left]**2)left += 1else:res.append(nums[right]**2)right -= 1res.append(nums[left]**2)res.reverse()return res
结果快了不少,90+ 的时间
然后看了题解,也是用时最短的解法:
class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:return sorted(num * num for num in nums)
感觉自己好傻
Life is short, You need Python
