剣指offerno 45.トランプ順子(Java)


タイトルの説明:
LL今日の気持ちはとても良くて、彼がトランプを买いに行ったため、中に意外にも2人の王がいることを発见して、2人の王(1枚の札はもともと54枚^^)...彼はランダムに中から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だと思います.
考え方:
    5枚のカードは大きさ5の配列で代用できます
  • まず配列をソート
  • 配列中の0の個数を遍歴する n
  • 隣接する数字間の空き位置個数m
  • を算出する.
  • m<=nの場合、5枚のカードが連続可能であることを示し、そうでなければ
  • は連続しない.
  • 配列を巡回し、検証を行い、配列内の隣接する数字が重複している場合も連続しない.

  • コード:
    package offer01;
    
    import java.util.Arrays;
    
    public class TestNo45 {
        public static void main(String[] args) {
            int[] a = {1,3,0,5,0};
            System.out.println(new TestNo45().isContinuous(a));
        }
        public boolean isContinuous(int [] numbers) {
            if(numbers == null || numbers.length <=0){
                return false;
            }
            Arrays.sort(numbers);//     
            int numberOf0 = 0;//     0   
            int numberOfGap = 0;//              
            //    0   
            for(int i = 0;i

     
    毎冬の句点はすべて春が暖かくて花が咲きます..