35. 搜索插入位置

描述

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

请必须使用时间复杂度为 O(log n) 的算法。

链接

35. 搜索插入位置 - 力扣(LeetCode) (leetcode-cn.com)

 

解法: 二分查找

二分查找,需要关注 left <= right 以及 mid <、=、 > targrt 各自情况下,left 和 right 各自具体怎么取值。

总体来说,下方 是 一个 正确的 二分解法

 1 class Solution {
 2     public int searchInsert(int[] nums, int target) {
 3         int left  = 0, right = nums.length - 1;
 4         while (left <= right) {
 5             int mid = left + (right - left) / 2;
 6             if(nums[mid] == target) {
 7                 return mid;
 8             }
 9             else if (nums[mid] < target) {
10                 left = mid + 1;
11             }
12             else {
13                 right = mid - 1;
14             }
15             System.out.println("nums[mid] :" + nums[mid] + " , " + target);
16             System.out.println("index:" + mid);
17         }
18         return left;
19     }
20 }

 

其他链接

二分查找基础知识_AlgoMooc算法慕课网

 

posted @ 2021-11-29 11:55  DidUStudy  阅读(29)  评论(0编辑  收藏  举报