力扣 LCR 172. 统计目标成绩的出现次数
简单的二分查询,查找后进行前后遍历。值得注意的是不要越界了。
class Solution {
public:
int countTarget(vector<int>& scores, int target) {
int l=0;
if(scores.empty())return 0;
int r=scores.size()-1;
int num=0;
while(l<=r){
num = (l+r)/2;
if(scores[num]>target){
r=num-1;
}
else if(scores[num]<target){
l=num+1;
}
else{
break;
}
}
int ans=0;
int temp = num;
while(scores[temp]==target){
ans++;
temp++;
if(temp>=scores.size())break;
}
temp = num-1;
if(temp<0)return ans;
while(scores[temp]==target){
ans++;
temp--;
if(temp<0)break;
}
return ans;
}
};
LCR 121. 寻找目标值 - 二维数组
查找二维数组里面是否有目标值,二维数组我想到的也是对每一层进行二分,但是感觉没什么进步,想了想可以存在一维中再进行查找,可是先存储再查找反而浪费时间和内存,不如直接查,这里懒了,直接遍历查找
class Solution {
public:
bool findTargetIn2DPlants(vector<vector<int>>& plants, int target) {
if(plants.empty())return false;
for(int i=0;i<plants.size();i++){
for(int j=0;j<plants[i].size();j++){
if(plants[i][j]==target){
return true;
}
}
}
return false;
}
};
幸运的是0ms通过,不懂这个运行时间怎么判断的。


2042

被折叠的 条评论
为什么被折叠?



