1. 题目描述:
从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。力扣
2.实例
输入: [1,2,3,4,5] 输出: True
输入: [0,0,1,2,5] 输出: True
3.限制
数组长度为 5
数组的数取值为 [0, 13]
话不多说,直接上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>扑克牌中的数字</title>
</head>
<body>
</body>
<script>
/**
* @param {number[]} nums
* @return {boolean}
*/
var isStraight = function(nums) {
//排序算法
var QuietSort = function (arr1,L,R) {
if (L>=R){
return ;
}
var left = L
var right=R
pivot = arr1[left]
while (left<right){
while (left<right && pivot <= arr1[right]){
right --
}
if(left < right){
arr1[left] = arr1[right]
}
while(left< right && pivot >= arr1[left]){
left ++
}
if(left < right){
arr1[right] = arr1[left]
}
if(left >= right){
arr1[left] = pivot
}
}
QuietSort(arr1, L,right-1)
QuietSort(arr1,right+1,R)
}
//先对数组进行排序
QuietSort(nums,0,4)
var zero =0
for(i=0;i<4;i++){
if(nums[i] == 0){
zero ++ //判断是否存在任意数0
}
}
console.log(zero)
if( zero == 0 && (nums[4]-nums[zero]) <5){ //若不存在任意数0,则判定两个数之间的差值是否大于1
for(i=1;i<4;i++){ // 只要差值不等于1,则立即返回false
if((nums[i]-nums[i-1])!=1){
return false
}
}
return true //若差值都<=1,则返回true
}
else { //当存在任意数0
for(i=zero;i<5;i++){ // 只要差值不等于1,则立即返回false
if((nums[i]-nums[i-1])== 0){
return false
}
}
if ((nums[4]-nums[zero]) <5 && zero >= ((nums[4]-nums[zero])-(4-zero)) ){ //任意数0的数量是否大于可以插入的空隙中
return true
}
else {
console.log("false")
return false
}
}
};
isStraight1([13,0,9,10,13])
//
</script>
</html>