977.Squares of a Sorted Array(有序数组的平方)

Description

Given an array of integers A sorted in non-decreasing order, return an array of the squares of each number, also in sorted non-decreasing order.


给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

题目链接:https://leetcode.com/problems/squares-of-a-sorted-array/

Difficulty: easy

Example 1:

Input: [-4,-1,0,3,10]
Output: [0,1,9,16,100]

Example 2:

Input: [-7,-3,2,3,11]
Output: [4,9,9,49,121]

Note:

  • 1 <= A.length <= 10000
  • -10000 <= A[i] <= 10000
  • A is sorted in non-decreasing order.

分析

  • 找到最小点(距离0最近的点)index;
  • 设置两个游标i,j从index向左右移动;
  • 移动判断移动i或j,得到有序数组的平方。

参考代码

class Solution:
def sortedSquares(self, A):
    target=abs(A[0])
    index=0
    for i in range(len(A)):
        if(abs(A[i])<=target):
            index=i
            target=abs(A[i])
        else:
            break
    i=index
    j=index+1
    li=[]
    while(i >= 0 and j < len(A)):
        if(abs(A[i])<abs(A[j])):
            li.append(A[i]**2)
            i-=1
        else:
            li.append(A[j]**2)
            j+=1
    while(i>=0):
        li.append(A[i]**2)
        i-=1
    while(j<len(A)):
        li.append(A[j]**2)
        j+=1
    return li
-------------本文结束你这么美,还坚持读完了-------------