全国兼职网站建设,部门网站开发,公司网站的设计风格大多是,酒店网站建设策划#x1f34e;道阻且长#xff0c;行则将至。#x1f353; #x1f33b;算法#xff0c;不如说它是一种思考方式#x1f340;算法专栏#xff1a; #x1f449;#x1f3fb;123 一、#x1f331;35. 搜索插入位置
题目描述#xff1a;给定一个排序数组和一个目标值道阻且长行则将至。 算法不如说它是一种思考方式 算法专栏 123 一、35. 搜索插入位置
题目描述给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。来源力扣LeetCode难度简单提示 1 nums.length 104 -104 nums[i] 104 nums 为 无重复元素 的 升序 排列数组 -104 target 104
解题
这个题要求O(log n) 的算法且就描述来看也是一个二分法的模子也不用去考虑暴力搜索了。
二分法
不同的地方在于没有目标元素的时候要求返回一个插入的位置。那是不是在判断leftright不成立的时候插入而最后的时刻可能是left右移也可能是right左移导致搜索结束 最后时刻left右移表示target大于【middle】应该插入的就是middle右边刚好此时left右移到该位置 最后时刻right左移表示target小于【middle】应该插入的就是middle左边而这是也正式left所指位置 所以不管最后是哪一个操作最后插入的位置都是left。 例如 例如
code int middle ;int left0,right nums.length-1;while(leftright){middleleft(right-left)/2;if(targetnums[middle])return middle;else if(targetnums[middle]){rightmiddle-1;}else{leftmiddle1;}}return left;本题只需要在搜索结束未命中的时候考虑在哪个位置插入。 ☕物有本末事有终始知所先后。 ☝☝☝☝☝我的CSDN☝☝☝☝☝☝