扑克牌中的顺子问题
来源:互联网 发布:yy老虎机软件 编辑:程序博客网 时间:2024/05/17 10:38
输入:数组元素为0~13的数组; 0表示大王小王;1-13表示A-K
数组长度为5;问这五数是否可以组成顺子
输出:能组成顺子返回true,否则返回false
思路1:1 先排序,标记0的个数,
2 从不为0的数开始遍历,如果当前数为1且与后一个数的差大于等于9,继续循环(考虑10 JQKA)。前一个数与后一个数差:为0返回false(考虑重复不为0的数);小于等于0的个数+1,0的个数减去这个差-1,循环继续遍历。
boolean isContinuous(int[] numbers) {if(numbers.length<5)return false;Arrays.sort(numbers);int zeroCount = 0;for(int i = 0;i < numbers.length && numbers[i]==0;i++){zeroCount++;}int j = zeroCount;while(j+1<numbers.length){if(numbers[j]==numbers[j+1])return false;else if(numbers[j]==1 &&numbers[j+1]-numbers[j]>=9){j++;}else if(zeroCount>=numbers[j+1]-numbers[j]-1){zeroCount -= numbers[j+1]-numbers[j]-1;j++;}elsereturn false;}return true;}
思路2:
max 记录 最大值min 记录 最小值min ,max 都不记0满足条件
1 除0外没有重复的数字(牌) 用长度为14的数组
2 max - min <5
public boolean isContinuous(int [] numbers) { int[]d = new int[14]; d[0] = -5; int len = numbers.length; int max = -1; int min = 14; for(int i =0;i<len;i++){ d[numbers[i]]++; if(numbers[i] == 0){ continue; } if(d[numbers[i]]>1){ return false; } if(numbers[i] >max){ max = numbers[i]; } if(numbers[i] <min){ min = numbers[i]; } } if(max -min<5){ return true; } return false; }
思路3:1. 除0外没有重复的数(利用bit的与或关系去重)2. max - min < 5public class Solution { public boolean isContinuous(int [] numbers) { if(numbers.length != 5) return false; int min = 14; int max = -1; int flag = 0; for(int i = 0; i < numbers.length; i++) { int number = numbers[i]; if(number < 0 || number > 13) return false; if(number == 0) continue; if(((flag >> number) & 1) == 1) return false; flag |= (1 << number); if(number > max) max = number; if(number < min) min = number; if(max - min >= 5) return false; } return true; }}
0 0
- 扑克牌中的顺子问题
- 判断扑克牌中的顺子
- 扑克牌中的顺子
- 扑克牌顺子问题
- 扑克牌的顺子问题
- 算法:扑克牌的顺子问题
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- 扑克牌顺子
- java获取一份文件的MD5值
- 集合的整数表示
- Android利用setLayoutParams在代码中调整布局(Margin和居中)
- 前端-JavaScript(二)
- 二叉树的后序遍历
- 扑克牌中的顺子问题
- 编译原理学习笔记(四)预测分析器(2)
- 在Windows平台上搭建Docker开发环境
- mysql 慢查询日志设置
- Python中Loadlibrary失败, 提示cannot open shared object file
- python——基于煎蛋网的简单图片爬虫
- [HDU 5213]Lucky:莫队+容斥原理
- iOS开发图片美白处理,图像处理,,磨皮,马赛克基于UIKit下自写算法
- 1008. 数组元素循环右移问题 (20)