二分法

    1. # 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
    2. #
    3. # 你可以假设数组中无重复元素。
    4. #
    5. # 示例 1:
    6. #
    7. # 输入: [1,3,5,6], 5
    8. # 输出: 2
    9. #
    10. #
    11. # 示例 2:
    12. #
    13. # 输入: [1,3,5,6], 2
    14. # 输出: 1
    15. #
    16. #
    17. # 示例 3:
    18. #
    19. # 输入: [1,3,5,6], 7
    20. # 输出: 4
    21. #
    22. #
    23. # 示例 4:
    24. #
    25. # 输入: [1,3,5,6], 0
    26. # 输出: 0
    27. #
    28. # Related Topics 数组 二分查找
    29. # 👍 650 👎 0
    30. # leetcode submit region begin(Prohibit modification and deletion)
    31. class Solution(object):
    32. def searchInsert(self, nums, target):
    33. """
    34. :type nums: List[int]
    35. :type target: int
    36. :rtype: int
    37. """
    38. left, right = 0, len(nums) - 1
    39. while left <= right:
    40. mid = (left + right) // 2
    41. if nums[mid] > target:
    42. right = mid - 1
    43. elif nums[mid] < target:
    44. left = mid + 1
    45. else:
    46. return mid
    47. return left
    48. # leetcode submit region end(Prohibit modification and deletion)
    49. s = Solution()
    50. print(s.searchInsert([1, 3, 5, 6], 0), '== 0')
    51. print(s.searchInsert([1, 3, 5, 6], 7), '== 4')