leetcode34. 在排序数组中查找元素的第一个和最后一个位置

题目描述:

题解: 

1.用一个list保存最终返回结果,res1记录target出现的第一个位置,res2记录最后一个位置。

2.先采用二分法寻找target所在位置记录为pos。

3.将pos赋值给res1 res2,res1不断左移,寻找target第一个出现的位置,res2右移,找到最后一个target位置。

class Solution(object):
    def searchRange(self, nums, target):
        if len(nums)==0:
            return [-1,-1]
        result = []
        pos = -1
        left = 0
        right = len(nums)-1
        find = 0
        while left<=right and find==0:
            mid = (left+right)//2
            if nums[left]==target:
                pos = left
                find = 1
            if nums[right]==target:
                pos = right
                find = 1
            if nums[mid]==target:
                pos = mid
                find = 1
            if nums[mid]>target:
                right = mid-1
            if nums[mid]<target:
                left=mid+1
        res1 = pos
        res2 = pos
        while res2+1<len(nums) and nums[res2+1]==target:
            res2 = res2+1
        while res1-1>=0 and nums[res1-1]==target:
            res1 = res1-1
        result.append(res1)
        result.append(res2)
        return result

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值