剑指 Offer 61. 扑克牌中的顺子
时间:2022-05-27 22:43:18
收藏:0
阅读:13
方法一 先排序
不存在重复数字,且已知最大值最小值,则最大值减最小值只要小于5就符合题目。
1 /** 2 * @param {number[]} nums 3 * @return {boolean} 4 */ 5 var isStraight = function(nums) { 6 nums.sort((a,b) => a - b); 7 let zero_sum = 0; 8 for(let i = 0; i < nums.length; i++) { 9 if(nums[i] == 0) { 10 zero_sum++; 11 }else if(nums[i] == nums[i + 1]){ 12 return false; 13 } 14 } 15 return nums[4] - nums[zero_sum] < 5; 16 };
方法二 借用辅助空间
1 /** 2 * @param {number[]} nums 3 * @return {boolean} 4 */ 5 var isStraight = function(nums) { 6 let repeat = new Set(); 7 let max = 0, min = 14; 8 for(num of nums) { 9 if(repeat.has(num)) { 10 return false; 11 } 12 if(num != 0) { 13 repeat.add(num); 14 }else { 15 continue; 16 } 17 max = Math.max(num, max); 18 min = Math.min(min, num); 19 } 20 return max - min < 5; 21 };
原文:https://www.cnblogs.com/yukinon/p/15358300.html
评论(0)