📑 题目:35. 搜索插入位置

🚀 本题 LeetCode 传送门

题目大意

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

解题思路

  • 给出一个已经从小到大排序后的数组,要求在数组中找到插入 target 元素的位置。
  • 这一题是经典的二分搜索的变种题,在有序数组中找到最后一个比 target 小的元素。

代码

  1. package leetcode
  2. func searchInsert(nums []int, target int) int {
  3. low, high := 0, len(nums)-1
  4. for low <= high {
  5. mid := low + (high-low)>>1
  6. if nums[mid] >= target {
  7. high = mid - 1
  8. } else {
  9. if (mid == len(nums)-1) || (nums[mid+1] >= target) {
  10. return mid + 1
  11. }
  12. low = mid + 1
  13. }
  14. }
  15. return 0
  16. }
  17. ```[TOC]
  18. # 📑 题目:35. 搜索插入位置
  19. 简单 🕓 2021-05-12 📈 频次: 2
  20. **
  21. [🚀 本题 LeetCode 传送门](https://leetcode-cn.com/problems/search-insert-position/)
  22. **题目大意**
  23. 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
  24. 你可以假设数组中无重复元素。
  25. **解题思路**
  26. - 给出一个已经从小到大排序后的数组,要求在数组中找到插入 target 元素的位置。
  27. - 这一题是经典的二分搜索的变种题,在有序数组中找到最后一个比 target 小的元素。
  28. **代码**

package leetcode

func searchInsert(nums []int, target int) int { low, high := 0, len(nums)-1 for low <= high { mid := low + (high-low)>>1 if nums[mid] >= target { high = mid - 1 } else { if (mid == len(nums)-1) || (nums[mid+1] >= target) { return mid + 1 } low = mid + 1 } } return 0 } ```