題目描述
LL今天心情特別好,因?yàn)樗ベI了一副撲克牌,發(fā)現(xiàn)里面居然有2個(gè)大王,2個(gè)小王(一副牌原本是54張_)...他隨機(jī)從中抽出了5張牌,想測(cè)測(cè)自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿>砭小!“紅心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是順子.....LL不高興了,他想了想,決定大\小 王可以看成任何數(shù)字,并且A看作1,J為11,Q為12,K為13祝高。上面的5張牌就可以變成“1,2,3,4,5”(大小王分別看作2和4),“So Lucky!”栗弟。LL決定去買體育彩票啦。 現(xiàn)在,要求你使用這幅牌模擬上面的過程,然后告訴我們LL的運(yùn)氣如何工闺。為了方便起見,你可以認(rèn)為大小王是0乍赫。
這題思路不復(fù)雜,但是容易忽略一些特殊情況陆蟆,比如存在兩個(gè)數(shù)字相同那么一定不是順子雷厂,再比如計(jì)算缺幾張的時(shí)候,for循環(huán)最多到倒數(shù)第二個(gè)數(shù)遍搞。
import java.util.*;
public class Solution {
public boolean isContinuous(int [] numbers) {
if(numbers.length==0){
return false;
}
List<Integer> list = new ArrayList<>();
for(int i=0; i<numbers.length; i++){
list.add(numbers[i]);
}
//先排序
Collections.sort(list);
//再求缺的牌數(shù)
int count = 0; //缺幾張可以構(gòu)成順子
int king = 0; //有幾張王
for(int i=0; i<list.size()-1; i++){
if(list.get(i)!=0){
//如果有兩張一樣的罗侯,則肯定不是順子
if(list.get(i+1)==list.get(i)){
return false;
}
count+=(list.get(i+1)-list.get(i)-1);
}else{
king++;
}
}
if(king>=count){
return true;
}
return false;
}
}