有序数组的平方(刷题心得)

写题的时候不想用暴力法,结果在排序那里死磕好久,道理都明白,上手写的时候总是差一点...

双指针法:

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        l, r, i = 0, len(nums) - 1, len(nums) - 1
        res = [float('inf')] * len(nums)
        while l <= r:
            if nums[l] ** 2 < nums[r] ** 2:
                res[i] = nums[r] ** 2
                r -= 1
            else: 
                res[i] = nums[l] ** 2
                l += 1
            i -= 1
        return res

根据需求比较两个指针所指向的元素,并根据比较结果来决定移动哪个指针。左指针会向右移动,右指针会向左移动,直到它们相遇或交叉。

还有需要注意的是:

res = [float('inf')] * len(nums)

初始化这个新的数组时,由于原数组中的元素是整数,因此不会出现与 float('inf') 相同的值,这样可以避免在填充过程中产生错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值