没有判断数组长度, 导致 {1,3,2,5,4} 输出结果是 false 是什么鬼???
------------------------------------------------------------------------
时间限制: 1 秒 空间限制: 32768K 热度指数: 163724
本题知识点: 字符串
题目描述
LL 今天心情特别好, 因为他去买了一副扑克牌, 发现里面居然有 2 个大王, 2 个小王 (一副牌原本是 54 张 ^_^)... 他随机从中抽出了 5 张牌, 想测测自己的手气, 看看能不能抽到顺子, 如果抽到的话, 他决定去买体育彩票, 嘿嘿!!"红心 A, 黑桃 3, 小王, 大王, 方片 5","Oh My God!" 不是顺子.....LL 不高兴了, 他想了想, 决定大 \ 小 王可以看成任何数字, 并且 A 看作 1,J 为 11,Q 为 12,K 为 13. 上面的 5 张牌就可以变成 "1,2,3,4,5"(大小王分别看作 2 和 4),"So Lucky!".LL 决定去买体育彩票啦. 现在, 要求你使用这幅牌模拟上面的过程, 然后告诉我们 LL 的运气如何, 如果牌能组成顺子就输出 true, 否则就输出 false. 为了方便起见, 你可以认为大小王是 0.
- class Solution {
- public:
- bool IsContinuous( vector numbers ) {
- if(numbers.size()> 5)return false;
- sort(numbers.begin(), numbers.end());
- int zero = count(numbers.begin(), numbers.end(), 0);//0 的个数
- int len = unique(numbers.begin(),numbers.end())-numbers.begin();// 去掉重复的长度
- if(zero && len <5-zero+1) return false;// 存在非 0 重复
- if(!zero && len <5)return false;
- int minn;
- for(vector::iterator it=numbers.begin(); it!=numbers.end(); it++) {
- if(*(it) == 0)continue;
- else if(minn ==0) {
- minn=*(it);
- }
- if(*(it) -minn+1>5)return false;
- }
- return true;
- }
- };
来源: http://www.bubuko.com/infodetail-3005779.html