讨论/题目交流/🏆 第 183 场力扣周赛/
🏆 第 183 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

4 分 - 非递增顺序的最小子序列
4 分 - 将二进制表示减到 1 的步骤数
6 分 - 最长快乐字符串
7 分 - 石子游戏 III

第一题被它第二个测试案例晃昏了,误以为目标的序列是顺序字串,写了半个小时,已提交发现搞错了。其实就是排序,最大的数之和2倍大于总和就完事了;
然后看了第二题,卧槽500个字符串转不了数字咋做呀,就去做第三题。第三题喵了一下,嗯嗯easy,每次输出最大的,记录当前符号,满三次换就完事了,写着写着,卧槽思路很简单,细节是魔鬼。一堆判断,颤抖式提交,居然过了,看了下排名咦300名,这次题这么难吗!第二题才4分,看来是个水题,搞他!
然后想了想,卧槽确实是水题,模拟就完事了。细节实现也简单,弄完11点50了,哎,最后一题也不做了恰饭去。
前两道水题,就不贴了,帖个第三题代码。
class Solution {
public:
string longestDiverseString(int a, int b, int c) {
string temp;
int count=0;
char countchar='e';
while(a>0||b>0||c>0){
while((a>0||b>0||c>0)&&count<2){
if(a>=b&&a>=c){
temp+='a';
a--;
if(countchar!='a'){ //a,b,c的这个步骤和下面的步骤都可以写函数复用,我这样写太长了。
count=0;
countchar ='a';
count++;
}
else count++;
}
if(b>a&&b>=c){
temp+='b';
b--;
if(countchar!='b'){
count=0;
countchar ='b';
count++;
}
else count++;
}
if(c>b&&c>a){
temp+='c';
c--;
if(countchar!='c'){
count=0;
countchar ='c';
count++;
}
else count++;
}
}
if(a>0&&'a'!=countchar) {
count=1;
countchar='a';
a--;
temp+='a';
}
else if(b>0&&'b'!=countchar) {
count=1;
countchar='b';
b--;
temp+='b';
}
else if(c>0&&'c'!=countchar) {
count=1;
countchar='c';
temp+='c';
c--;
}
else break;
}
return temp;
}
};

展开全部 22 讨论