还是采用双指针法,但这次双指针是在一头和一尾。比较两数的大小,当一方小时,该指针不动,并将大的往前(或者后)移,再次比较。对了,每次比较结束后都要将大的值放置在新数组。
# -*- coding: utf-8 -*-
"""
@Time : 2022/8/6 16:09
@Author : FJC
@File : 有序数组的平方.py
@Software: win10 python3.7
"""
class Solution:
def sortedSquares(self,nums):
n=len(nums)
new_nums=[0]*n
slow,fast,cur=0,n-1,n-1
for i in range(n):
slow_value=nums[slow]**2
fast_value=nums[fast]**2
if slow_value<=fast_value:
new_nums[cur]=fast_value
fast-=1
else:
new_nums[cur]=slow_value
slow+=1
cur-=1
return new_nums
solution=Solution()
print(solution.sortedSquares([-3,-2,-1,0,2,10]))