网站维护北京,广州安全教育平台下载,无锡网站广优化公司,专业做网站较好的公司一#xff1a;题目#xff1a;
给定一个排序数组和一个目标值#xff0c;在数组中找到目标值#xff0c;并返回其索引。如果目标值不存在于数组中#xff0c;返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。
示例 1:
输入: nums [1,3,5,6], …一题目
给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。
示例 1:
输入: nums [1,3,5,6], target 5 输出: 2 示例 2:
输入: nums [1,3,5,6], target 2 输出: 1 示例 3:
输入: nums [1,3,5,6], target 7 输出: 4 示例 4:
输入: nums [1,3,5,6], target 0 输出: 0 示例 5:
输入: nums [1], target 0 输出: 0
二思路
这里就是将示例进行分析深刻理解二分算法的过程所以只要你认真分析分析就欧克了
三上码
class Solution {
public:int searchInsert(vectorint nums, int target) {/**采用左闭右闭的做法每次达到边界都是比右范围要大1*/int l 0;int r nums.size() - 1;int mid;while(l r){int mid (r l)/2;if(nums[mid] target){r mid - 1;}else if(nums[mid] target){l mid 1;}else{return mid;} }return r 1;}
};