剑指offer-45
扑克牌顺子
http://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4
核心思想:类似用bit-map一样计数排序,毕竟只有0-13这14种牌。然后用大小王去填补牌之间的空缺,或者连续牌前后的空缺。
我这个代码并不是完完全全符合这个核心思想的(全是大小王不能判断,现有连续牌都在最后几张不能判断),但是过了,不想改了。
public class Solution { public boolean isContinuous(int [] numbers) { if(numbers.length==0){ return false; } int[] arr = new int[14]; for(int i=0;i<14;i++){ arr[i] = 0; } for(int n : numbers){ arr[n]++; } int flag = 0; for(int i=1;i<14;i++){ if(arr[0]==0&&arr[i]==0){ break; } if(arr[i]>0){ flag++; continue; } if(flag>0&&arr[i]==0&&arr[0]>0){ arr[i] = 1; arr[0] -= 1; flag++; } } return flag==numbers.length; } }