#977. 升序数组的平方
##题目
给定一个升序数组,返回排好序的平方过后的该数组。
解答
暴力解法
平方,后用内置排序。
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
#square
for k in range(len(nums)):
nums[k] = nums[k]**2
nums.sort()
双指针解法
第一个指针 i 在最前,第二个指针 j 在最后,得出nums[i]和nums[j]的更大位,赋给新开辟的数组的尾端。
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
#two pointers method
#需要开辟一个新的数组
i = 0
j = len(nums) - 1
result = [0] * len(nums)
for k in range(len(nums) - 1, -1, -1):
if(abs(nums[i]) < abs(nums[j])):
square = nums[j]
j -= 1
else:
square = nums[i]
i += 1
result[k] = square * square
return result
收获
- array.sort() 可放入reverse = true,给出倒序排序
- merge最后的结果