开发者社区> 答案命运> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

剑指Offer——扑克牌中的顺子(JS实现)

简介: 剑指Offer——扑克牌中的顺子(JS实现)
+关注继续查看

题目描述


image.png

解题思路

  • 本题采用的是通过零数组来辅助判断是否是顺子
  • 具体的过程,代码注释中都有

解题代码

var isStraight = function (nums) {
    // 将nums数组中所有0元素放入下面的数组中
    const zeroArr = [];
    // 将数组从小到大进行排序
    nums.sort((num1, num2) => num1 - num2);
    // 将含零的元素添加到0的数组中
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] === 0) {
            zeroArr.push(nums[i]);
        }
    }
    // 将nums数组中的0全部过滤掉
    nums = nums.filter(value => value !== 0);
    // 如果nums数组中含有重复元素,说明不是顺子,直接返回false
    if ([...new Set(nums)].length !== nums.length) return false;
    // 遍历nums的所有非零元素
    for (let i = 1; i < nums.length; i++) {
        // 如果后一个比前一个大一,说明属于顺子,继续判断
        if (nums[i] - nums[i - 1] === 1) {
            continue;
        } else if (nums[i] - nums[i - 1] > 1) {
            // 如果后一个比前一个大的多,首先判断0数组中是否有元素,没有则返回false
            if (zeroArr.length === 0) return false;
            // 如果有0元素,则判断零的个数是否能够填补空缺的数字
            if (zeroArr.length >= nums[i] - nums[i - 1] - 1) {
                for (let j = 0; j < nums[i] - nums[i - 1] - 1; j++) {
                    zeroArr.pop();
                }
            } else {
                return false;
            }
        }
    }
    return true;
};

总结(本题给我们的启示思路)

  • 启示一:学会使用辅助数组来判断目标元素
  • 启示二:学会通过集合给数组进行去重
  • 启示三:学会通过filter进行过滤数组

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于H5+css+JavaScript实现动态线性渐变背景
基于H5+css+JavaScript实现动态线性渐变背景
25 0
基于H5+css+JavaScript实现全屏覆盖导航栏
基于H5+css+JavaScript实现全屏覆盖导航栏
43 0
css3结合JavaScript实现翻页幻灯片效果
CSS3+JavaScript实现翻页幻灯片效果
10 0
JavaScript实现简单区块链
用JavaScript来实现一个简单的区块链。通过实现过程,你将理解区块链是什么:区块链就是一个分布式数据库,存储结构是一个不断增长的链表,链表中包含着许多有序的记录。
1078 0
使用JavaScript实现一个俄罗斯方块
清明假期期间,闲的无聊,就做了一个小游戏玩玩,目前游戏逻辑上暂未发现bug,只不过样子稍微丑了一些-.-项目地址:https://github.com/Jiasm/tetris在线Demo:http://blog.
1436 0
JavaScript进阶【五】利用JavaScript实现动画的基本思路
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/79659313 ...
917 0
Javascript实现完美继承
javascipt 实现javascript完美继承要考虑三个方面: 第一步: 获取父构造函数体内的属性 解决方法: 通过 Father.
897 0
javascript oo实现
很久很久以前,我还是个phper,第一次接触javascript觉得好神奇。跟传统的oo类概念差别很大。记得刚毕业面试,如何在javascript里面实现class一直是很热门的面试题,当前面试百度就被问到了,当年作为一个小白只是网上随便搜搜应付了下。
615 0
JavaScript实现排序算法
排序算法主要用在元素的数组排序,常见的排序算法有冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序等。这些排序算法都可以用JavaScript实现。
639 0
+关注
答案命运
人有多自律,就有多自由!
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Python第五讲——关于爬虫如何做js逆向的思路
立即下载
JS零基础入门教程(上册)
立即下载
编程语言如何演化—— 以 JS 的 private 为例
立即下载