剑指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进行过滤数组
相关文章
|
3月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
7月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
7月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
46 0
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
355 1
|
存储 前端开发 算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
165 0
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
|
存储 机器学习/深度学习 JavaScript
JS 你最少用几行代码实现深拷贝?
JS 你最少用几行代码实现深拷贝?
JS 你最少用几行代码实现深拷贝?
|
JavaScript 前端开发 算法
JavaScript实现一段时间之后关闭广告
简介:通过JavaScript实现在一段时间之后,广告消失。
136 0
JavaScript实现一段时间之后关闭广告
|
JavaScript 前端开发 算法
JS实现鼠标悬停变色
本文实现的是利用JS实现当鼠标悬停在表格上的时候,表格发生变色。 CSS渲染 JS逻辑 `
224 0
JS实现鼠标悬停变色