首页 > 其他分享 >剑指 Offer 61. 扑克牌中的顺子(简单)

剑指 Offer 61. 扑克牌中的顺子(简单)

时间:2023-08-27 20:56:19浏览次数:36  
标签:count false nums Offer 61 牌数 顺子

题目:

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        sort(nums.begin(), nums.end());      //首先要对数组进行排序
        int count=0;      //count用来记录万能牌0的个数,count相当于用来补牌
        for(auto n:nums){
            if(n==0) count++;
        }
        for(int i=count+1;i<5;i++){      //从第二个非零的数开始遍历
            if(nums[i]==nums[i-1]) return false;      //若当前数等于前一个数,返回false
            if(nums[i]-nums[i-1]-1>count) return false;      //若当前数与前一个数之间缺失的牌数(nums[i]-nums[i-1]-1)大于count,返回false
            count = count - (nums[i]-nums[i-1]-1);      //count减去被拿去补充的牌数
        }
        return true;
    }
};

标签:count,false,nums,Offer,61,牌数,顺子
From: https://www.cnblogs.com/fly-smart/p/17660812.html

相关文章

  • 剑指Offer 30. 包含min函数的栈
    题目链接:剑指Offer30.包含min函数的栈题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min、push及pop的时间复杂度都是O(1)。解法思路:首先理解题意:题目是要实现一个可以在O(1)的时间复杂度内得到栈中最小值得栈,如果是常......
  • 剑指 Offer 40. 最小的k个数(简单)
    题目:classSolution{public:vector<int>getLeastNumbers(vector<int>&arr,intk){vector<int>result;sort(arr.begin(),arr.end());for(inti=0;i<k;i++){result.push_back(arr[i]);......
  • 剑指 Offer 17. 打印从1到最大的n位数(简单)
    题目:classSolution{public:vector<int>printNumbers(intn){vector<int>result;intmax=pow(10,n)-1;//最大n位数的求法for(inti=1;i<=max;i++){result.push_back(i);}returnresul......
  • 剑指Offer 29. 顺时针打印矩阵
    题目链接:剑指Offer29.顺时针打印矩阵题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。解法思路:本题的题意比较简单,也就是螺旋打印矩阵,但是这里面有技巧,使用数组定义好在打印过程中的四个移动方向在遍历的过程中,每次都是在该方向上移动,当移动......
  • 剑指Offer 28. 对称的二叉树
    题目链接:剑指Offer28.对称的二叉树题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。解法思路:采用递归的方法,依次遍历根节点的左子树和右子树,判断左子树的左子树与右子树的右......
  • 剑指Offer 26. 树的子结构
    题目链接:剑指Offer26.树的子结构题目描述:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构,即A中有出现和B相同的结构和节点值。解法思路:首先这道题很明显是采取递归的形式,整体流程主要分为两步:找到A树上的某个节点与B树的根......
  • 剑指Offer 27. 二叉树的镜像
    题目链接:剑指Offer27.二叉树的镜像题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像。解法思路:此题本质上就是一个二叉树遍历的问题:在遍历的过程中,交换左右子树即可。代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint......
  • 剑指Offer 25. 合并两个排序的链表
    题目链接:剑指Offer25.合并两个排序的链表题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。解法思路:在两链表向后遍历的过程中,哪个更小一点,哪个先放在合并后的链表中。最后哪个链表剩余,直接接在合并链表的后面即可。代码:/***Definit......
  • 剑指Offer 22. 链表中倒数第k个节点
    题目链接:剑指Offer22.链表中倒数第k个节点题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。解法思路:快慢指针:慢指针不动,快指针先走k步,然后快慢指针一起向后走,当快指针走到末尾时,慢指针所指的就是倒......
  • 「算法与数据结构」梳理6大排序算法 为了offer!
    6种排序如下......