飙车回家又是11点多了,发现今天的daily challenge是easy就顺手解个吧!题目在这边:1189. Maximum Number of Balloons
这就真的蛮简单没什麽好说的XD 但我们可以做的就是用尽量少的时间跟空间~
看到这题目应该很明显就是我们需要去统计各个字母出现的次数,然後去求5个字母的最小次数(l
跟o
要除以2)
有几种直觉做法:
text[i]-'a'
去存每个字母的出现次数cnt[i]++
),不过这空间有没有省到就难说了。btw每次遇到这种计算频率就会很想念python的counter可以秒杀~ 如果用python的话强力推荐有很多人实作好的function可以直接用,而且时间都还比自己慢慢算快很多;不过python跟C++的执行速度也不在同一个等级就是了XD
count(s.begin(), s.end(), 'a');
) 来直接计算字母出现的频率,但就时间而言,每次的count等於都要去扫一遍整个string,5个字母都要扫就需要扫五次,所以还是手动扫过一轮直接一起计算就好。class Solution {
public:
int maxNumberOfBalloons(string text) {
// record frequency only for 'b','a','n','l','o'
vector<int> cnt(5);
char tmp;
for(int i=0;i<text.length();++i){
tmp = text[i];
if(tmp=='b'){
cnt[0]++;
}
else if(tmp=='a'){
cnt[1]++;
}else if(tmp=='n'){
cnt[2]++;
}else if(tmp=='l'){
cnt[3]++;
}else if(tmp=='o'){
cnt[4]++;
}
}
return min({cnt[0], cnt[1], cnt[2], cnt[3]/2, cnt[4]/2});
}
};
也可以像我上面提到的unordered_map写法
class Solution {
public:
int maxNumberOfBalloons(string text) {
// record frequency only for 'b','a','n','l','o'
unordered_map<char, int> cnt;
char tmp;
for(int i=0;i<text.length();++i){
tmp = text[i];
if(tmp=='b' || tmp=='a' || tmp=='l' || tmp=='o' || tmp=='n'){
cnt[tmp]++;
}
}
return min({cnt['b'], cnt['l'], cnt['o']/2, cnt['l']/2, cnt['n']});
}
};
第二个这个写法,在最後取cnt['b']...
的时候可能会比较快~ 不过这有待更多查证实验了
整个code不是很美观,但是就求一个(自己觉得?)快XD 至少除了写完可以accept都可以多思考一下有哪边是可以优化的地方~
当然如果要写的general就不用写死这麽多条件,直接把26个字母用昨天计算次数表的方式来存就好,code可以整个简洁很多
希望明天的题目可以是easy~medium但是有梗的XD 不然内容好空虚啊
然後可以早点下班回来慢慢写(结语怎麽变成在许愿)~
甚麽是第三方支付? 第三方支付是指电子商务企业或是具实力及信用保障的独立机构,与银行之间建立一个中立...
当我们浏览着一列列毫无止尽的文字,不知道该如何心安的情况下... 网路的世界本来就是犹如沙子般繁多的...
经过了两个多星期後,我们终於开始进入 presentation layer 的部分。Presenta...
如果有使用过其他框架的经验,可能会需要熟悉一下React 的写法,是由 JSX 搭配回圈去产生。以下...
shadow element, 它的命名就透露出它不是个外显的 UI 元件,实际上它的确不会绘制出任...