JavaScript 算法:判断五张牌是否为顺子
function isStraight(cards) { // 首先将牌从小到大排序 cards.sort((a, b) => a - b); // 统计0的个数,即大小王的数量 let numOfZero = 0; for (let i = 0; i < cards.length; i++) { if (cards[i] === 0) { numOfZero++; } } // 统计非0数字的间隔数 let numOfGap = 0; for (let i = numOfZero; i < cards.length - 1; i++) { if (cards[i + 1] - cards[i] === 0) { return false; // 有重复的牌,不是顺子 } numOfGap += cards[i + 1] - cards[i] - 1; } // 如果0的数量大于等于间隔数,则可以组成顺子 return numOfZero >= numOfGap; }
// 使用示例 const cards = [3, 4, 0, 6, 7]; console.log(isStraight(cards)); // true
原文地址: https://www.cveoy.top/t/topic/mB6g 著作权归作者所有。请勿转载和采集!