searchInsertPlus

来源:互联网 发布:苹果手机如何授权软件 编辑:程序博客网 时间:2024/06/05 10:30

在我看懂了solution以后码的代码,这主要是一个二分法的实现过程

1,取中间值m = (r+1)/2,然后比较target与中间数的大小,如果中间数大于target,就将r赋值为m-1,首先判断r有没有小于0,然后判断那个target是否在m-1与m之间

2,如果中间数小于target,就将l赋值为m+!,首先判断l有没有超过length,然后判断target是否在m与m+1之间

3,如果中间数等于target,直接输出即可

注:中间数取(r+1)/2,记得赋值,不然while进入死循环,记得判断左右的边界,以及m与左右相邻数的中间数

nums = [1,3,5,6]target = 0length = len(nums)if target > nums[length-1]:    nums.append(target)    print(length)elif target < nums[0]:    nums.insert(0,target)    print(0)else:    l = 0    r = length - 1    while l <= r:        m = int((r+1)/2)        if target < nums[m]:            r = m -1            if r >= 0:                if nums[r] < target:                    nums.insert(r+1,target)                    print(r+1)                    break            else:                print(0)                break        elif target > nums[m]:            l = m + 1            if l <= length-1:                if target < nums[l]:                    nums.insert(l,target)                    print(l)                    break            else:                nums.insert(length,target)                print(length)                break        else:            nums.insert(m,target)            print(m)            break

0 0
原创粉丝点击