【剑指offer系列】61-扑克牌中的顺子(关键字:计算两两差值)

A:1,J:11,Q:12,K:13。大小王可以代表任意数
public class Main {public static void main(String[] args) {boolean b = isStraight();System.out.println(b);}private static boolean isStraight() {Random ran = new Random();int[] array = new int[5];int[] arr = new int[]{0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};for (int i = 0; i < 5; i++) {//1.随机选取5个数,并排序array[i] = arr[ran.nextInt(15)];}Arrays.sort(array);System.out.println(Arrays.toString(array));int num_of_zero = 0;for (int i = 0; i < 2 && array[i] == 0; i++) {//2.统计0的个数num_of_zero++;}//3.统计相邻元素差值(相同元素直接为false)int res = 0;for (int i = 0; i < array.length - 1; i++) {if (array[i + 1] == array[i])return false;if (array[i + 1] - array[i] >= 2)res = array[i + 1] - array[i];}//4.判断0的个数和差值能否匹配(1个0顶差值2)if ((double)num_of_zero >(double) res / 2) {return true;} else {return false;}}
}