剑指offer-43 扑克牌的顺子

来源:互联网 发布:维棠flv下载器 mac 编辑:程序博客网 时间:2024/05/16 15:28

一、解决步骤

1、对数组排序

2、找出0的个数

3、找出空缺的位置


#include <iostream>#include <cstdlib>using namespace std;bool IsContinuous(int *number,int length);int compare(const void* arg1,const void* arg2);/*    1、对数组排序    2、找出0的个数    3、找出空缺的位置*/bool IsContinuous(int *number,int length){    if(number == nullptr || length<5)        return false;    qsort(number,length,sizeof(int),compare);    int numberofzero = 0,numberofgap = 0;    for(int i = 0;i<length && number[i]==0;i++)        numberofzero++;    int small = numberofzero;    int big = small+1;    while(big < length)    {        //有对子        if(number[small]==number[big])            return false;        //排序后,number[0],number[1]....number[small-1] 都是0        //number[small]是第一个非0元素,number[big] 是第二个非0元素        numberofgap += number[big]-number[small]-1;        small = big;        big++;    }    return (numberofgap>numberofzero) ? false:true;}int compare(const void* arg1,const void* arg2){    return *((int*)arg1)-*(int*)arg2;}int main(){    int a[] = {1,3,5,0,6};    cout<<IsContinuous(a,5)<<endl;    return 0;}


0 0
原创粉丝点击