35 Search Insert Position(找到数的位置Medium)

题目意思:在递增数组中找到目标数的位置,如果目标数不在数组中,返回其应该在的位置。

思路:折半查找,和相邻数比较,注意边界

 1 class Solution {
 2 public:
 3     int searchInsert(vector<int>& nums, int target) {
 4         int start=0,end=nums.size()-1;
 5         int flag=0;
 6         while(start<=end){
 7             flag=(start+end)/2;
 8             if(nums[flag]==target)return flag;
 9             else if(nums[flag]<target){
10                 if(flag==nums.size()-1||nums[flag+1]>=target)return flag+1;  //和相邻数比较
11                 else start=flag+1;
12             }
13             else{
14                 if(flag==0||nums[flag-1]<target)return flag;
15                 else end=flag-1;
16             }
17         }
18     }
19 };

 

posted @ 2015-06-14 11:58  影翕  阅读(157)  评论(0编辑  收藏  举报