网站源码小千个人网,中小企业公共服务平台网站建设,阿里云怎么上传wordpress,电商运营公司解析
时间复杂度要求#xff0c;所以使用二分的思想#xff0c;漏掉了很多问题#xff0c;这里记录
在left-right1时#xff0c;已经找到了插入位置#xff0c;但是没有赋值#xff0c;然后break#xff0c;所以导致一直死循环。 if(right - left 1){result right;b…解析
时间复杂度要求所以使用二分的思想漏掉了很多问题这里记录
在left-right1时已经找到了插入位置但是没有赋值然后break所以导致一直死循环。 if(right - left 1){result right;break;
} 在和最右侧数比较时漏掉了相等时就直接找到所以在数组是[1,3]target1时应该返回下标0 if(target nums[left]){result left;break;
} 长度为0时不进入循环了所以循环条件是left right。
代码
class Solution {
public:int searchInsert(vectorint nums, int target) {int left 0;int right nums.size()-1;int result 0;while(left right){int mid (leftright)/2;if(target nums[left]){result left;break;}if( nums[right] target){result right1;break;}if( nums[right] target){result right;break;}if(right - left 1){result right;break;}if(nums[mid] target){left mid;}else if(target nums[mid]){right mid;}else if(nums[mid] target){result mid;break;}}return result;}
};