您的位置:首页 > 娱乐 > 八卦 > 不用实名认证的网页游戏_国内气膜馆建造商_物联网开发_百度seo如何优化

不用实名认证的网页游戏_国内气膜馆建造商_物联网开发_百度seo如何优化

2025/7/6 20:48:48 来源:https://blog.csdn.net/weixin_74681777/article/details/142726475  浏览:    关键词:不用实名认证的网页游戏_国内气膜馆建造商_物联网开发_百度seo如何优化
不用实名认证的网页游戏_国内气膜馆建造商_物联网开发_百度seo如何优化

知识点:

二分搜索的区间,一般分为左闭右闭或左闭右开

left=0
易错点1
while(易错点2)
{middle=(left+right)/2if(nums[middle]>target){right=易错点3}else if(nums[middle]<target){left=middle+1}else if(nums[middle]=target){return target}
}
return -1

易错点:

1、定义right时是否-1

1、while循环条件,left是<还是<=right

2、当更新右区间时,right等于middle还是middle-1

1、左闭右闭

(1)right=numsize-1

定义时,将右侧减去,右边界left代表的为真实数据,因此右侧为闭区间

(2)while(left<=right)

右侧为闭区间,nums[left]为数组中的数据,也需要被比较,因此应该包括到循环条件中

(3)right=middle-1

if判断nums[middle]是否大于target时,nums[right]为准确的右边界。重新定义区间时,新区间应该为除去nums[middle]以后,左侧的全部数,因此应该-1

2、左闭右开

(1)right=numsize

右侧不-1,最右侧为一个虚值,不是实际数组中的数据

(2)while(left<right)

最右侧为虚值,如果使用等于,则会少比较最右侧的数字

(2)right=middle

当判断后,接下来的搜索区间多包含nums[right],因此不-1

nums[right]是否为准确值右边界right=while判断条件右边界重定义right=
准确值numsize-1left<=rightmiddle-1
不准确numsizeleft<rightmiddle

例题:704:二分查找

题目

(1)nums[right]不是准确值

class Solution {
public:int search(vector<int>& nums, int target) {int left=0;int right=nums.size();while(left<right){int middle=(left+right)/2;if(nums[middle]>target){right=middle;}else if(nums[middle]<target){left=middle+1;}else if(nums[middle]==target){return middle;}}return -1;}
};

(2)nums[right]是准确值

class Solution {
public:int search(vector<int>& nums, int target) {int left=0;int right=nums.size()-1;while(left<=right){int middle=(left+right)/2;if(nums[middle]>target){right=middle-1;}else if(nums[middle]<target){left=middle+1;}else if(nums[middle]==target){return middle;}}return -1;}
};

vector的基础知识

vector分为容量和使用量,用size()返回向量的使用量,用capacity返回向量的容量

不可以使用sizeof计算长度

相似题目 :2529:正整数和负整数的最大计算

题目

https://leetcode.cn/problems/maximum-count-of-positive-integer-and-negative-integer/

 

题解

class Solution {
public:int maximumCount(vector<int>& nums) {int pos=0;  //正整数数目int neg=0;  //负整数数目int numsize=nums.size();int i=0;while(i<numsize){if(nums[i]<0){neg++;}else if(nums[i]>0){pos++;}i++;}if(neg>=pos){return neg;}else{return pos;}}
};

相似题目:1351:统计有序矩阵中的负数

题目

题解

class Solution {
public:int countNegatives(vector<vector<int>>& grid) {int i=0;int j=0;int num=0;int length=grid.size();int width=grid[0].size();for(int i=0;i<length;i++){for(int j=0;j<width;j++){if(grid[i][j]<0){num++;}}}return num;}
};

矩阵vector

二维矩阵时,.size()得到的是行数

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com