p23のバイナリサーチ(leetcode 704)

A:問題解決のためのアイデア

この質問は、元の二分探索問題、比較的短い答えです。コードを書くときには、ライン上のいくつかの詳細に注意を払う必要があります。

2:完全なコード例(C ++版、Java版)

C ++:

クラスのソリューション
 { 
 パブリックint型検索(ベクトル< int型 > NUMS&、int型ターゲット)
     { 
         int型 RET = - 。1 ;
          int型開始= 0 ;
          int型エンド= nums.size() - 1。 

         しばらく(開始<=エンド)// これがあることに注意してください。<= 
         {
              INT MID =は+(終了-開始)開始/ 2 ; //は、さらに効率を改善するために、それが/であってもよいと>> 

             IF(NUMS [MID]> ターゲット)
             { 
                 終了=半ば- 1 
             } 
             そう であれば(<NUMS [中間] 目標)
             { 
                 始める =ミッド+ 1 
             } 
             
             { 
                 RET = ミッド。
                 休憩; 
             } 
         } 

         戻りRET。
     } 
 }。

Javaの:

クラスソリューション
{ 
    公共 int型の検索(INT [] NUMS、INT ターゲット)
    { 
          int型 RET = - 1 INT =始める0端= nums.length-、1 
          
          一方(= <開始端)
          { 
              int型のミッド= +始める((エンド開始)>> 1 )。
              
              もし(NUMS [中間]> ターゲット)
              {  =半ば1 
              } 
              そう であれば(NUMS [中間] < ターゲット) 
              {
                  開始 =ミッド+ 1 ; 
              } 
              
              { 
                  RET = ミッド。
                  休憩; 
              } 
          } 
          
          戻りRET。
    } 
}

 

おすすめ

転載: www.cnblogs.com/repinkply/p/12470767.html