码迷,mamicode.com
首页 > 其他好文 > 详细

2020.7.17 力扣每日

时间:2020-07-18 00:57:17      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:总结   style   大于等于   color   利用   空间复杂度   img   span   大于   

技术图片

 1 class Solution {
 2     public int searchInsert(int[] nums, int target) {
 3         int length = nums.length;
 4         int left = 0, right = length - 1, ans = 0;
 5         while (left <= right){
 6             int mid = (left + right) / 2;
 7             if (nums[mid] < target){
 8                 left = mid + 1;
 9                 ans = left;
10             }
11             else right = mid - 1;
12         }
13         return ans;
14     }
15 }

解题思路:

    对于该题要求,显然可以利用暴力法即顺序查找的方法查找元素插入位置,但这显然不是最优解法。此时很容易想到利用二分查找法,由于该题数组内可能不存在插入的元素,所以需要略微修改下二分查找的算法,搜索到最后一个小于目标的元素,插入到它的后面,或搜索到第一个大于等于目标的元素,插入到它的当前位置。此处使用第一种方法,即nums[mid] < target。

注意点:

    对于nums[mid] < target的方法,即搜索最后一个小于目标的元素时,可能整个数组都大于target,所以ans初始值设置为0

    对于nums[mid] >= target的方法,即搜索第一个大于等于目标的元素,可能整个数组都小于target,所以ans初始值设置为length

时间复杂度:O(logN)

空间复杂度:O(1)

题后总结:

    优:熟练的使用二分查找解决题目

    差:无

 

2020.7.17 力扣每日

标签:总结   style   大于等于   color   利用   空间复杂度   img   span   大于   

原文地址:https://www.cnblogs.com/-TTY/p/13333832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!