剣指offer 66のトランプ順子(java)
1236 ワード
今日、彼はトランプを买いに行ったので、中には大王が2人、王さんが2人いることに気づきました.彼はランダムに中から5枚の札を抜いて、自分の手加減を測って、順子を抽選できるかどうかを見て、もし抽選したら、彼はスポーツ宝くじを買うことにしました.へへへ!!「赤いハートA、黒桃3、王さん、王さん、角片5」、「Oh My God!」顺子ではない…LLは不機嫌になって、彼は考えて、大きい王さんがいかなる数字を见ることができることを决めて、しかもAは1と见て、Jは11で、Qは12で、Kは13です.上の5枚のカードは「1,2,3,4,5」(大きさの王はそれぞれ2と4と見なしている)、「So Lucky!」になります.LLはスポーツ宝くじを買うことにしました.今、このカードを使って上の過程をシミュレートして、LLの運を教えてください.カードが順子を構成できればtrueを出力します.そうしないとfalseを出力します.便宜上、王さんは0だと思います.
解題の構想はまず王(0)の数を統計して、それから札を並べて、もし後ろの1つの数が前の1つの数より1以上大きいならば、中間の差は王で補わなければなりません.王の数が足りないのを見て、足りなければtrueに戻って、さもなくばfalseに戻ります.
コード実装
解題の構想はまず王(0)の数を統計して、それから札を並べて、もし後ろの1つの数が前の1つの数より1以上大きいならば、中間の差は王で補わなければなりません.王の数が足りないのを見て、足りなければtrueに戻って、さもなくばfalseに戻ります.
コード実装
import java.util.Arrays;
public class Solution {
public boolean isContinuous(int [] numbers) {
int zero = 0, dis = 0;
if(numbers.length != 5)
return false;
Arrays.sort(numbers);
for(int i = 0; i < 4; i++){
if(numbers[i] == 0){
zero ++;
continue;
}
if(numbers[i] == numbers[i+1])
return false;
if(numbers[i+1] - numbers[i] > 1){
dis += numbers[i+1] - numbers[i] - 1;
}
}
if(zero >= dis)
return true;
else
return false;
}
}