题目意思:在递增数组中找到目标数的位置,如果目标数不在数组中,返回其应该在的位置。
思路:折半查找,和相邻数比较,注意边界
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 };
时间: 2024-10-02 02:50:11