在 halfsearch 函数中,当 midvalue == nums[mid] 时,应该将 l 更新为 mid 而不是 l=mid,因为 mid 可能是答案,需要再次搜索右半部分。另外,需要将 ans 设为引用类型,才能在函数中正确修改它的值。修改后的代码如下:

class Solution { public: void halfsearch(vector& nums,int l,int r,int tmp,int& ans){ if(l+1==r) return; while(l+1!=r){ int mid=(l+r)/2; int midvalue=tmp/2; if(midvalue==nums[mid]){ l=mid; }else r=mid; } ans=nums[l]+1; } int missingNumber(vector& nums) { int tmp=nums[nums.size()-1]-nums[0]; int l=-1,r=nums.size(); int ans; halfsearch(nums,l,r,tmp,ans); return ans; } }

class Solution public void halfsearchvectorint& numsint lint rint tmpint ans ifl+1==r return; whilel+1!=r int mid=l+r2; int midvalue=tmp2; ifmidvalue=

原文地址: https://www.cveoy.top/t/topic/geFb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录