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