剑指 Offer 61. 扑克牌中的顺子

题目描述:

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。

//方法1:排序+遍历
/*
    首先需要将手中的牌排序,然后统计0的个数,如果这些牌中除0之外有别的数相等,则不可能为顺子;
    
    统计牌中的差值,如果不够用来补零的,则不可能为顺子。

*/

bool IsContinuous( vector<int> numbers ) 
{
    if(numbers.empty())
		return false;
	int len=numbers.size();
	int count=0;//0的个数 
	int temp=0;//差值 
	//进行排序
	sort(numbers.begin(),numbers.end()); 
	for(int i=0;i<len-1;i++)
	{
		if(numbers[i]==0)
		{
			count++;	
			continue;
		}
		if(numbers[i]==numbers[i+1])
		{
			return false;
		}
	}   
	temp=(numbers[len-1]-numbers[count]-1)-(len-1-count-1);//应该有(numbers[len-1]-numbers[count]-1)个数,已经有 (len-1-count-1)个数 
	return (temp<=count);
}
全部评论

相关推荐

今天 14:46
门头沟学院 Java
点赞 评论 收藏
分享
07-20 12:08
已编辑
江南大学 图像识别
机械牛马勇闯秋招:把校园经历里面做过的项目,大作业,课设,毕设啥的,扩写,写成具体的项目经历,自我评价缩写别占篇幅,不然这简历真没东西,初筛都过不了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务