力扣刷题-数组-另一种双指针-有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]

class Solution(object):
    def sortedSquares(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        result = [0] * len(nums) # 定义一个存储结果的数组 全部初始化为0
        i, j, k = 0, len(nums)-1, len(nums) - 1 # 这种也是类似双指针 不一定是快慢
        while i <= j: # =还是不=可以慢一点确定 先把大概逻辑确定 再去定细节
            if nums[i]**2 > nums[j]**2:
                result[k] = nums[i]**2
                i += 1
            else:
                result[k] = nums[j]**2
                j -= 1
            k -= 1
        return result

参考:https://programmercarl.com/

你可能感兴趣的:(leetcode刷题,leetcode,数据结构,算法,python)