#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
题目:Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
举例:
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
[1,3,3,3,3,5] 3 -> 1
寻找符合要求最小的index
'''
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
length = len(nums)
if length == 0:
return -1
left,right = 0,length - 1
index = 0
while left <= right:
index = (left + right)>>1
val = nums[index]
if val == target:
if index > 0 and nums[index - 1] == target:
right = index - 1
else:
return index
elif val > target:
right = index - 1
else:
left = index + 1
return index if nums[index] > target else index + 1
if __name__ == "__main__":
s = Solution()
print s.searchInsert([1,3,3,3,3,5],3)
30 leetcode - Search Insert Position
最新推荐文章于 2025-08-16 00:47:01 发布