题目
思路1:map,lambda与sorted(暴力破解的简洁美学)
- map(func, list): 返回一个列表,且其中元素为list中对应元素施以func作用后的结果。
- lambda a:func(a) : 匿名方程,对a施以作用func.
- sorted(list): 返回排序过后的list,原list内容不更改。
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
nums = map(lambda a:a**2, nums)
return sorted(nums)
思路2:双指针
由于原数组nums为从小到大排列,则平方后的最大值必然在数列两端的两个元素之间产生。使用左右两指针指代当前未处理元素的两端,依次将平方后的最大值插入结果数列的最前端,即可返回递增排序的平方后数列。
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
left = 0
right = len(nums)-1
res = []
while left <= right:
if nums[left] ** 2 >= nums[right] ** 2:
res.insert(0, nums[left] ** 2)
left += 1
else:
res.insert(0, nums[right] ** 2)
right -= 1
return res