class Solution:
"""
@param A: The array A.
@return: The array of the squares.
"""
def SquareArray(self, A):
# write your code here # 这代码写的的不pythonic
N = len(A)
# 首先,我们找到负数和非负数的分界点j,代表最大的一个负数
p = 0 # 正数指针
while p < N and A[p] < 0:
p += 1
n = p - 1
ans = []
while 0 <= n and p < N:
if A[n]**2 < A[p]**2: # 正数的平方比负数大
ans.append(A[n]**2) # 添加较小的平方数
n -= 1
else:
ans.append(A[p]**2)
p += 1
# 如果还有剩余负数,继续添加
while n >= 0:
ans.append(A[n]**2)
n -= 1
# 如果还有剩余正数,继续添加
while p < N:
ans.append(A[p]**2)
p += 1
return ans
A = [-4,-1,0,3,10]
a = [-7,-3,2,3,11]
# Solution.SquareArray(A) 这样会报错,这样传递的是类的id,并不是类的实例
b = Solution()
print(Solution().SquareArray(a)) # [4, 9, 9, 49, 121]
print(b. SquareArray(A)) # 这里要把函数类传递进去