标签:com nim -o number 理解 size ring return 模拟
leetcode1419. 数青蛙
这题我用我的理解来模拟,在地上有c r o a k 五块石头,当你踩到某块石头的时候,这块石头会发亮,当你离开某块石头的时候亮光会消失。现在来想,怎么样可以不用多余的人?
对于你自己来说:那肯定是你从c石头走到k石头了,然后再来一趟。如果你在roa中的某块石头,突然发现c石头亮了,那肯定又有一个人加入了踩石头的队伍中。
换句话说(对于多人来说),如果c石头亮了,那么当且仅当k石头上有人才能不需要多余的人(这些人可以扭头再来一趟),否则就要来一个新的人加入队伍
class Solution {
public:
int minNumberOfFrogs(string F) {
int c,r,o,a,k,ans;
c = r = o = a = k = ans = 0;
for(int i = 0; i < F.size(); i++){
if(F[i] == ‘c‘){
if(k > 0){k--;}else ans++; //如果k石头上有人的话不需要增加人,否则人数+1
c++;
}
if(F[i] == ‘r‘){r++;c--;}
if(F[i] == ‘o‘){o++;r--;}
if(F[i] == ‘a‘){a++;o--;}
if(F[i] == ‘k‘){k++;a--;}
if(c<0 || r<0 || o<0 || a<0 || k<0) break;
}
if(c!= 0 || r != 0 || o != 0 || a != 0) return -1; //最后符合题目要求的条件肯定是croa上没有人
else return ans;
}
};
标签:com nim -o number 理解 size ring return 模拟
原文地址:https://www.cnblogs.com/Beic233/p/12767899.html