代码随想录算法训练营day1|704.二分查找、27.移除元素、977.有序数组的平方

学习资料:https://programmercarl.com/数组理论基础.html

理解:
双指针可以同时获取一个数组的两个位置的值
二分查找:根据区间范围(左闭右闭、左闭右开)来判断左右指针比较方式

刷题记录:
704.二分查找(左闭右闭则<=,左右指针,middle=left+(right-left)//2, 因为考虑了等号情况所以下一步left=middle+1或right=middle-1)

点击查看代码
class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        left, right = 0, len(nums)-1
        while left <= right:
            middle=left + (right-left)//2
            if nums[middle]>target:
                right=middle-1
            elif nums[middle]<target:
                left = middle + 1
            else:
                return middle
        return -1
27.移除元素(只有一个数组空间;快慢指针;移除元素命令本质是把这个元素后一位移动到这个位置;soft寻找值不为val的位置,slow为准备保存值的位置;用while将soft遍历全数组)
点击查看代码
class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        soft=0
        slow=0
        size=len(nums)
        while soft < size:
            if nums[soft] != val:
                nums[slow] = nums[soft]
                slow += 1
            soft += 1
        return slow
977.有序数组的平方(题给数组空间+结果数组空间;左右指针+目标k指针;左闭右闭;left<=right;k从大到小使得结果数组是递增;把max(left值的平方,right值的平方)赋给k值,并移动相应指针和k指针)
点击查看代码
class Solution(object):
    def sortedSquares(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        left=0
        right = len(nums)-1
        k=len(nums)-1
        result=[0]*len(nums)
        while left <= right:
            if nums[left]**2 > nums[right]**2:
                result[k]=nums[left]**2
                left += 1
            else:
                result[k]=nums[right]**2
                right -= 1
            k -= 1
        return result
PS:国庆第二天,阴转小雨,感觉时间*0.5倍速
posted @   Tristan241001  阅读(7)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示