如何用PYTHON解决搜索插入位置问题
1、打开JUPYTER NOTEBOOK,新建一个空白的PY文档。

2、nums = [1,3,5,6]
target = 5
for i in range(len(nums)):
if nums[i] == target:
print(i)
正常的遍历可以找出相等的数字。

3、nums = [1,3,5,6]
target = 2
for i in range(len(nums)):
if nums[i] == target:
print(i)
如果数字不在,就不返回结果。

4、nums = [1,3,5,6]
target = 5
nums.index(target)
nums = [1,3,5,6]
target = 5
if target in nums:
print(nums.index(target))
也可以这样稍微修改一下。

5、nums = [1,3,5,6]
target = 2
if target in nums:
print(nums.index(target))
else:
for i in range(len(nums)):
if nums[i] < target and nums[i+1] > target:
print(i+1)
如果不在就插入相应的位置。这里是假设的位置,返回位置的序列。

6、nums = [1,3,5,6]
target = 0
if target in nums:
print(nums.index(target))
else:
for i in range(len(nums)):
if nums[i] < target and nums[i+1] > target:
print(i+1)
nums = [1,3,5,6]
target = 0
if target in nums:
print(nums.index(target))
else:
for i in range(len(nums)):
if target < nums[0]:
print(0)
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
如果是最小数0,那么我们应该多考虑一种结果。


7、nums = [1,3,5,6]
target = 7
if target in nums:
print(nums.index(target))
else:
for i in range(len(nums)):
if target < nums[0]:
print(0)
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
nums = [1,3,5,6]
target = 7
if target in nums:
print(nums.index(target))
else:
for i in range(len(nums)):
if target < nums[0]:
print(0)
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
elif target > nums[-1]:
print(len(nums))
break
如果是最大数,我们应该增加一种考虑。


8、nums = [1]
target = 2
if target in nums:
print(nums.index(target))
else:
for i in range(len(nums)):
if target < nums[0]:
print(0)
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
elif target > nums[-1]:
print(len(nums))
break
nums = [1]
target = 2
for i in range(len(nums)):
if target < nums[0]:
print(0)
break
elif nums[i] == target:
print(i)
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
elif target > nums[-1]:
print(len(nums))
break
如果列表只有一个数字,这个方法会超出范围。


9、nums = [1]
target = 2
for i in range(len(nums)):
if target < nums[0]:
print(0)
break
elif nums[i] == target:
print(i)
break
elif nums[i] < target:
print(i+1)
break
elif target > nums[-1]:
print(len(nums))
break
修改一下即可运行。

10、nums = [1,3,5,6]
target = 7
for i in range(len(nums)):
if nums[0] > target:
print(0)
break
elif nums[i] == target:
print(i)
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
break
elif target > nums[-1]:
print(len(nums))
break
nums = [1]
target = 2
for i in range(len(nums)):
if nums[0] > target:
print(0)
break
elif nums[i] == target:
print(i)
break
elif target > nums[-1]:
print(len(nums))
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
break
多测试一下两个实例。


11、nums = [1,3,5,6]
target = 7
for i in range(len(nums)):
if nums[0] > target:
print(0)
break
elif nums[i] == target:
print(i)
break
elif target > nums[-1]:
print(len(nums))
break
elif nums[i] < target and nums[i+1] > target:
print(i+1)
break
最后调整一下这样就是比较容易理解的。
