网站banner图怎么设计/深圳企业网站制作
题目简述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例4:
输入: [1,3,5,6], 0
输出: 0
题目分析
很简单的一道二分查找题。代码如下:
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int low=0,mid,res=-1;int n=nums.size();int high=n-1;//二分查找部分while(low<=high){mid=(low+high)/2;if(nums[mid]==target){res=mid;break;}else if(nums[mid]<target)low=mid+1;else if(nums[mid]>target)high=mid-1;}//如果没有目标元素则寻找添加位置if(res==-1){if(nums[n-1]<target)res=n;if(nums[0]>target)res=0;else for(int i=0;i<n-1;i++){if(nums[i]<target&&nums[i+1]>target)res=i+1;}}return res;}
};