- 浏览: 787370 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
Netty源码学习-FileRegion -
飞天奔月:
写得有趣 ^_^
那一年你定义了一个接口 -
GoldRoger:
第二个方法很好
java-判断一个自然数是否是某个数的平方。当然不能使用开方运算 -
bylijinnan:
<script>alert("close ...
自己动手实现Java Validation -
paul920531:
39行有个bug:"int j=new Random ...
java-蓄水池抽样-要求从N个元素中随机的抽取k个元素,其中N无法确定
package com.ljn.base; import java.util.Arrays; import java.util.Random; public class ContinuousPoker { /** * Q67 扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。 * 2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。 */ private static final int[] poker = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, }; private static final int MAX = 5; private static final int MAX_VAL = 13; public static void main(String[] args) { // test 1.Specific data for test. int[][] testData = { { 7, 8, 0, 10, 11 }, { 7, 8, 0, 0, 11 }, { 8, 9, 9, 10, 11 }, { 7, 8, 9, 10, 11 }, { 0, 8, 0, 10, 11 }, }; for (int[] pokerSelected : testData) { test(pokerSelected); } // test 2.Imitate the real situation:Select 5 poker randomly. int[] pokerSelected = randomSelect(poker, MAX); test(pokerSelected); } public static void test(int[] pokerSelected) { System.out.println(Arrays.toString(pokerSelected)); boolean continuous = isContinuous(pokerSelected); System.out.println("continuous is " + continuous); } /* * 1)确认5张牌中除了0,其余数字没有重复的(可以用表统计的方法); * 2) * 满足这样的逻辑:(max,min分别代表5张牌中的除0以外的最大值最小值) 如果没有0,则max-min=4,则为顺子,否则不是 * 如果有一个0,则max-min=4或者3,则为顺子,否则不是 如果有两个0,则max-min=4或者3或者2,则为顺子,否则不是 * * 最大值和最小值在第1步中就可以获得 */ public static boolean isContinuous(int[] x) { int[] existTimes = new int[MAX_VAL + 1]; boolean result = false; int len = x.length; int max = x[0], min = x[0]; int zeroCount = 0; for (int i = 0; i < len; i++) { existTimes[x[i]]++;// record the number of occurrences if (x[i] == 0) { zeroCount++; } else { if (x[i] > max || max == 0) max = x[i]; if (x[i] < min || min == 0) min = x[i]; } } for (int i = 1; i < MAX_VAL; i++) {// i starts from 1,exclude '0' if (existTimes[i] > 1) {// duplicate non-zero element return false; } } if (zeroCount == 0) { if (max - min == MAX - 1) result = true; } else if (zeroCount == 1) { if (max - min == MAX - 1 || max - min == MAX - 2) result = true; } else if (zeroCount == 2) { if (max - min == MAX - 1 || max - min == MAX - 2 || max - min == MAX - 3) result = true; } return result; } /* * @param count how many elements you want to pick * * @param data the data array */ public static int[] randomSelect(int[] data, int count) { int[] result = new int[count]; int len = data.length; for (int i = 0; i < count; i++) { Random random = new Random(); int pos = random.nextInt(len); result[i] = data[pos];// pick out the element data[pos] = data[len - 1];// and replace it with the last element len--; } return result; } }
评论
3 楼
bylijinnan
2013-04-09
aprilfore 写道
初始化min时若值为0,则后面if(x[i]<min)min=x[i];操作无效
确实是个bug
多谢指正 改过来了
2 楼
aprilfore
2013-04-08
初始化min时若值为0,则后面if(x[i]<min)min=x[i];操作无效
1 楼
aprilfore
2013-04-08
那个测试样例是{0,8,0,10,11},貌似返回false啊
发表评论
-
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
2012-12-21 18:17 4102import java.util.Arrays; ... -
java-56-动态规划-最长公共子序列
2012-03-12 00:14 2975http://zhedahht.blog.163.com/bl ... -
java-60-在O(1)时间删除链表结点
2012-03-12 00:12 1987public class DeleteNode_O1_ ... -
java-57-用两个栈实现队列&&用两个队列实现一个栈
2012-03-11 11:25 10803import java.util.ArrayList; ... -
java-26-左旋转字符串
2012-03-11 11:23 3084public class LeftRotateString ... -
java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶
2012-03-08 20:41 5002import java.util.Stack; pu ... -
java-54- 调整数组顺序使奇数位于偶数前面
2012-03-06 21:09 3702import java.util.Arrays; imp ... -
java-63-在字符串中删除特定的字符
2012-03-05 16:47 2335public class DeleteSpecific ... -
java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132
2012-03-05 10:38 6191import java.util.Arrays; imp ... -
java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素
2012-02-29 10:30 3537public class MinOfShiftedAr ... -
java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
2012-02-28 00:00 6452public class ProbabilityOfD ... -
java-71-数值的整数次方.实现函数double Power(double base, int exponent),求base的exponent次方
2012-02-27 21:43 3092public class Power { /* ... -
java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度
2012-02-27 16:14 5845public class LongestSymmtri ... -
java-75-二叉树两结点的最低共同父结点
2012-02-27 11:27 1553import java.util.LinkedList; ... -
java-74-数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字
2012-02-11 10:56 2507public class OcuppyMoreThan ... -
java-17-在一个字符串中找到第一个只出现一次的字符
2012-02-11 10:04 5887public class FirstShowOnlyO ... -
java-50-输入两棵二叉树A和B,判断树B是不是A的子结构
2012-02-10 23:26 1981思路来自:http://zhedahht.blog.163.c ... -
java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
2012-02-10 10:55 4276public class PrintMatrixClo ... -
java-61-在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差. 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5,
2012-02-09 23:08 2234思路来自:http://zhedahht. ... -
java-37.有n 个长为m+1 的字符串,如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配,则两个字符串可以联接
2012-01-27 22:46 2329public class MaxCatenate { ...
相关推荐
在PHP编程中,实现从扑克牌中随机抽取五张牌并判断是否为顺子是一个有趣的挑战,涉及到数组操作、随机数生成以及逻辑判断等基础知识。下面我们将深入探讨这个任务涉及的关键知识点。 首先,我们需要了解扑克牌的...
扑克牌的顺子.md
在Java编程领域,开发一款扑克牌游戏是一种常见的实践项目,旨在...总的来说,这个“java 扑克牌游戏”项目涵盖了Java编程的多个重要方面,对于学习和提升Java编程能力,尤其是游戏开发经验,是一个很好的实践平台。
《易语言模块扑克牌模块1.0》是一个专为易语言设计的扩展模块,它旨在为程序员提供方便、高效地处理扑克牌游戏逻辑的工具。这个模块包含了丰富的扑克牌操作函数和类,使得开发者能够快速地构建各种类型的扑克牌游戏...
在本项目中,我们探讨的是一个使用Java编程语言开发的扑克牌游戏。这种类型的游戏是计算机科学中的一个经典示例,因为它涉及到数据结构、算法以及面向对象编程的概念。以下是关于这个项目的详细知识点: 1. **Java...
java基础面试题扑克牌顺子本资源系百度网盘分享链接
在编程实现扑克牌时,可以创建一个类来表示单张牌,包含属性如花色、数字和类型(是否为Joker)。例如,可以定义一个`Card`类,其构造函数接受两个参数,分别表示花色和数值。为了方便存储和操作,通常会用枚举类型...
本话题聚焦于"C++判断牌型",即如何用C++编程语言处理扑克牌的牌型判断问题。这个问题涉及到数据结构、算法以及逻辑思维,是学习C++高级编程的一个好实例。 首先,我们需要定义扑克牌的数据结构。每张扑克牌通常...
在Java编程语言中实现斗地主扑克牌的排序是一个涉及数据结构、算法和对象导向编程的概念的任务。斗地主是一款流行的扑克游戏,需要对牌进行特定的规则排序,以确保公平性和游戏流程的正确性。在这个场景下,我们首先...
这个问题要求我们判断从一副扑克牌中抽出的五张牌是否构成一个顺子,即这些牌是否按照数字顺序连续排列。在扑克牌中,数字 2 至 10 对应其自身值,A 代表 1,J 代表 11,Q 代表 12,K 代表 13,而大、小王被视为 0,...
1. 创建扑克牌:定义一个扑克牌类,包含牌的花色(红桃、黑桃、梅花、方块)和点数(2-10、J、Q、K、A)。 2. 洗牌:使用随机数生成器对牌堆进行洗牌,确保每一轮游戏的随机性。 3. 发牌:按照预设的玩家数量,从洗...
如果i与i+1位置的元素相差恰好为1,那么说明此时恰为递增,故不需要用尝试用0来填充,如果否则记录下此时二者之间需要用多少张牌填充,即为$nums[i + 1]
61. 扑克牌顺子题目链接题目描述五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。解题思路// 统计癞子数量// 使用癞子去补全不连续的顺子。
61. 扑克牌顺子题目链接题目描述五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。解题思路// 统计癞子数量// 使用癞子去补全不连续的顺子。
在本文中,我们将深入探讨如何使用Java编程语言来实现一个扑克牌程序,这涉及到扑克牌的构造、基本算法以及比较、搜索和排序等关键操作。首先,我们需要理解扑克牌的基本结构和规则,以便在代码中有效地模拟它们。 ...
1. **扑克牌数据结构**:在《扑克牌模块1.0》中,扑克牌被表示为一个数据结构,通常包括牌面(如红桃A、梅花K等)和牌值(数字1到13)。这种数据结构设计使得对扑克牌的操作变得简单直观,例如比较牌的大小、查找...
在Java编程语言中,模拟斗地主游戏的洗牌、发牌和看牌过程是一项有趣的实践,这有助于加深对集合框架的理解。在这个项目中,主要使用了三种集合类:HashMap、ArrayList和TreeSet,它们各自有其独特的特性和用途。 ...
其中 2~10 为数字本身,A 用 1 表示,J 用 11 表示,Q 用 12 表示,K 用 13 表示,大小王用 0 表示,且大小王可以替换任意数字。解题思路