题解 | #扑克牌顺子#

扑克牌顺子

https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4

#include <climits>
class Solution {
 public:
  /**
   * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
   *
   *
   * @param numbers int整型vector
   * @return bool布尔型
   */
  bool IsContinuous(vector<int>& nums) {
    vector<int>& numbers = nums;
    sort(numbers.begin(), numbers.end());
    int zero = 0;
    int gap = 0;
    for (int i  = 0; i < numbers.size() - 1; i++) {
      while (numbers[i] == 0) {
        zero++;
        i++;
      }
      if(i == numbers.size()-1){
        return true;
      }
      if(numbers[i+1] == numbers[i]){
        return false;
      }
      gap += numbers[i + 1] - numbers[i] - 1;
    }
    if (gap > zero) {
      return false;
    } else {
      return true;
    }
  }
};

先对扑克牌进行排序,然后计算扑克牌中零的个数和非零牌之间的间隔总数,对比零牌张数和非零牌间隔总数,如果间隔总数 > 零牌数,则无法构成顺子,否则可以构成顺子。时间复杂度O(nlogn), 空间复杂度O(1).

全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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