LEETCODE [61]、leetcode&分類のアレイ、中程度のレベルのアイデア、タイトル:162,73

最近では、この単純な質問ブラシブラシはそれの終わりを取得するには、それを磨くために本当に必要なこの問題について考えてきましたか?

このトピックのタイトルは、私は常に重要性を磨く場所ようにどのように多くの問題どのように多くの質問、無制限のカジュアルBaiduのでしょうか?

最近質問ブラシブラシ感がより機械操作である理由を知り、考えるのは困難でした。

私は最終的に考え出した思考の数日後に、多少の使用感Jobsのスピーチの前に読む時間を取ります。

ここではブラシの問題は、コードが見えない改善された思考の自分のやり方の多くを書いた思考の独自の方法を、洗練され。

第二に、私は、対象が限られているので、それを行う必要がありますので、時間が限られている、そのような質問を磨く必要はありません。それぞれの質問を味わうことで、思考、私は、もし後に同様の問題が発生したものの視点から考える必要がどのように理解しておく必要があります達成。

だから、瞬間をまとめるために、唯一の質と量があることの力を体験するために、上がる、海、だけでなく、品質に疑問はない、とだけで品質は十分ではありませんが、程度は独自のを保持するために!

燃料を補給

今日、leetcodeの部品

パッケージy2019.Al​​gorithm.array.medium; 

/ ** 
 * @ProjectName:カッターポイント
 * @package:y2019.Al​​gorithm.array.medium 
 * @ClassName:FindPeakElement 
 * @author:xiaof 
 * @description:TODO 162要素ピークを探します
 * Aピーク要素は、その隣人の最後以内大きい要素です。
 *入力配列NUMS [I]≠NUMS [私は+ 1]、ピークの要素を検索し、そのインデックスを返します。NUMS、与えられた
 月上のアレイの*は、複数のピークが含まれ、ケースの一つのピークであるファインのいずれかにインデックスを返す。という
 *月であなたによってNUMSは[-1] NUMSは[N-] =-∞=と想像
 * 
 *ピーク、その値は、隣接する要素の値が左右より大きい要素を指し、 。
 NUMS [i]は≠NUMS [I前記入力アレイ* NUMS、所与 + 1]、 そのピークを返す要素のインデックスを発見します。
 *配列は、この場合には、ピーク位置への復帰を複数のピークを含んでいてもよいです。
 *あなたがNUMSをとることができる[-1] = NUMS [N ] =-∞。
 * 
 *出典:滞在ボタン(LeetCode)
 *リンク:https://leetcode-cn.com/problems/find-peak-element 
 *すべての著作権襟のボタンネットワーク。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。
 * 
 *入力:NUMS = [1,2,3,1] 
 *出力:2 
 *説明:エレメント3は、ピーク時には機能して、ナンバー2のインデックスを返すべきです
 * 
 * @date:2019年7月24日8時57分
 @Version *:1.0 
 * / 
パブリック クラスFindPeakElement { 

    公共 int型のソリューション(int型[] NUMSを){ 

        IF(NUMS == NULL || nums.length <= 0 ){
             戻り -1  
        } 

        IF(nums.length 1 ==。){
             戻り 0 ; 
        } 

        // バイナリサーチ極大
        INTの L = 0、R&LT nums.length = - 1。;
         INT RES = -1 ; 


        ながら(L <= R&LT){
             int型)MID =(L + R&LTを/ 2 ;
             // 決定データの前後のデータよりも大きいフロント中間値、かどうか、あなたがライン側比較する場合、データは、エッジを、ある場合
            INT =左(MID - 1)はInteger.MIN_VALUEの<0:NUMSを? [MID - 1 ];
             int型右=(+ MID 1)> =はInteger.MIN_VALUEのnums.length:[?MID 1 + NUMS ];
             IF(NUMSを左&& NUMS [MID]> [MID]> 右){
                RES =MID;
                 返すRESを; 
            } そう IF(左> NUMS [MID]){
                 // 左に我々が依存し、比較的大きな左 
                R&LT MID = - 1。; 
            } { 
                L = MID + 1 ; 
            } 
        } 

        戻りRES; 
    } 
}

 

パッケージy2019.Al​​gorithm.array.medium; 

/ ** 
 * @ProjectName:カッター点
 * @Package:y2019.Al​​gorithm.array.medium 
 * @ClassName:SetZeroes 
 * @Author:xiaof 
 * @description:TODO 73セットのマトリックスゼロ
 *要素である場合、行列amxn考えます0は、その場でそれを実行してください0に全体の行と列を設定します。
 * 
 *入力:
 * [ 
 * [1,1,1]、
 * [1,0,1]、
 * [1,1,1] 
 *] 
 *出力:
 * [ 
 * [1,0,1]、
 * [ 0,0,0]、
 * [1,0,1]が
 *] 
 *  
 * O(MN)のスペースを使用してまっすぐ進むソリューションは、おそらく悪い考えです。
 *単純な改善が最適なソリューションをO(M + N)空間を使用し、まだありません。 
 *あなたは定数解空間Aを考案てもらえますか?
 * 
 * @Date:2019年7月24日9:44 
 * @Version:1.0 
 * / 
パブリック クラスSetZeroes { 

    公共 ボイド溶液(INT [] []行列){
         // この問題は、空間複雑さはO(N-Mの+)未満である必要
         // これが所望される場合、元の行列のその後直接2サイクル動作
         // 1行列の最初のバーのエッジの位置を設定する0 0に
        int型 = C 1 のためにint型 I = 0;私はmatrix.length <; ++ I){
             IF(行列[I] [0] == 0)C = 0; // エッジのこの位置は、それ自体が0である場合
            INT J = 1; J <行列[I ] .LENGTH; ++J){
                 // セット側が0である
                IF(行列[I] [J] == 0 ){ 
                    行列[I] [ 0] =行列[0] [J] = 0 ; 
                } 
            } 
        } 
        // 2.再び横断しました限り値に対応するI、I、J、0または0、jは0で、それが0に設定されているように、マトリックス、
         // 0を左に設定し、上記の、そして私たちは下の右から横断を開始しているので
        ためint型私は= matrix.length - 1; I> = 0; - I){
             ためINT J =行列[I] .LENGTH - 1; J> = 1; --j){ // トラバースせずに最初の列、それがされたとして修飾
                 // セット側は0 
                IF){(行列[I] [0] == 0 ||行列[0] [J] == 0 
                    行列[I] [J] = 0 ; 
                } 
            } 
            // それが変更された後に最後に、別個の決意は、データの重複を避けるため操作再び
            IF(C == 0 ){
                 // C 0の存在は、カラム自体を識別する 
                [0] = 0の行列[I] ; 
            } 
        } 

    } 

}

 

おすすめ

転載: www.cnblogs.com/cutter-point/p/11236247.html