本文主要是介绍61-扑克牌中的顺子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。如输入: [1,2,3,4,5] 输出: True;输入: [0,0,1,2,5] 输出: True。
根据题意其实就是给一个含有五个元素的数组,数组的元素是从0到13之间。判断数据元素是不是连续即可,但这里有一个特征只要最大值减去最小值小于5且不出现重复即可满足,因为0是可以代替所有的数的。
package leecodeOff;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;/** 61.扑克牌中的顺子*/
public class Demo61 {public boolean isStraight(int[] nums) {Set<Integer> set = new HashSet<Integer>();int max = 0;int min = 14;for(int i=0;i<nums.length;i++) {int temp = nums[i];if(temp == 0) {continue;}else {if(!set.add(temp)) {return false;}else {max = Math.max(max, temp);min = Math.min(min, temp);}}}if(max - min<5) {return true;}else {return false;}}public static void main(String args[]) {Demo61 demo = new Demo61();int[] nums = {0,0,1,5,2};System.out.println(demo.isStraight(nums));}
}
这篇关于61-扑克牌中的顺子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!