当前位置:   article > 正文

leetcode 35 搜索插入位置 Search Insert Position 二分查找 c++实现_leetcode 35 c++

leetcode 35 c++

二分查找很简单:两种 一种递归 一种循环

这道题分两种情况:1.查的数在排序数组里,输出查到的点的位置信息就行

                                   2.查的数不在数组里,输出它应该在的地方,这里就几个小难点,没处理好有用例就过不了 (一个情况start=end,一个情况end<start,但是都能用mid=start+end/2来与所求点比较)

代码如下:

  1. class Solution {
  2. public:
  3. int searchInsert(vector<int>& nums, int target) {
  4. int start=0;
  5. int end=nums.size()-1;
  6. if(target<nums[0]){//比最小的还小 放在0位置
  7. return 0;
  8. }
  9. if(target>nums[end]){//比最大的还大,放在最大➕1
  10. end=end+1;
  11. return end;
  12. }
  13. while(start<end){//这个while就是循环二分查找
  14. int mid=(start+end)/2;
  15. if(target==nums[mid]){
  16. return mid;
  17. }
  18. else if(target<nums[mid]){
  19. end=mid-1;
  20. }
  21. else if(target>nums[mid]){
  22. start=mid+1;
  23. }
  24. }
  25. int mid=(start+end)/2;//存一下找到最后的开头和结尾
  26. if(target>nums[mid]){//如果这个点要比你最后查的中结点还大 当然向后移一个位置 如果这个点比你现在mid小 那就放在这个mid位置 当前的mid点向后移
  27. mid=mid+1;
  28. }
  29. return mid;
  30. }
  31. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/416945
推荐阅读
相关标签
  

闽ICP备14008679号