双指针

 

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

 
class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        n = len(nums)
        ans = [0] * n
        
        i, j, pos = 0, n - 1, n - 1
        while i <= j:
            if nums[i] * nums[i] > nums[j] * nums[j]:
                ans[pos] = nums[i] * nums[i]  # 最终结果是升序,且先放最大的。因为题目数据是山谷数组
                i += 1  # 循环遍历每个索引
            else:
                ans[pos] = nums[j] * nums[j]
                j -= 1  # 循环遍历每个索引
        pos -= 1 
    return ans

 

posted @ 2022-05-29 21:37  Python少年  阅读(31)  评论(0编辑  收藏  举报