剑指offer | 面试题61. 扑克牌中的顺子(模拟 C++)

题目描述(简单难度)

原题链接
在这里插入图片描述

算法

(模拟) O ( n ) O(n)

  • 用zeros去填充组成顺子时,中间缺的牌
  • 最后看zeros >= 0是否成立即可

时间复杂度是 O ( n ) O(n) ,空间复杂度是 O ( 1 ) O(1)

C++代码

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        int zeros = 0;
        sort(nums.begin(), nums.end());

        for (int i = 0; i < nums.size() - 1; i ++) {
            if (nums[i] == 0) zeros ++;
            else if (nums[i] == nums[i + 1]) return false;
            else {  
                zeros -= nums[i + 1] - nums[i] - 1; // use zeros
            } 
        }
        return zeros >= 0;
    }
};

写在最后:我的博客主要是对计算机领域所学知识的总结、回顾和思考,把每篇博客写得通俗易懂是我的目标,分享技术和知识是一种快乐 ,非常欢迎大家和我一起交流学习,有任何问题都可以在评论区留言,也期待与您的深入交流(^∀^●)

发布了249 篇原创文章 · 获赞 89 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/104396371
今日推荐