これは、ページアドレス上の特別な訓練プログラムLeetCodeです:https://leetcode-cn.com/explore/interview/card/top-interview-quesitons-in-2018/262/summery/
全体的に、より体系的かつ包括的な。これらの問題に対処するには、私はいつも最初に学ぶために、他の多くの独創的なソリューションを見た後、再びコーディング、独自のメソッドを使用するようにしてください。
0、番組タイトルのウォームアップ
0.1数は一度だけ表示されます
整数の非空の配列を考えると、要素に加えて、一度だけ表示され、各要素の残りの部分は二回表示されます。要素のみに一度表示されていることを知るために。
パッケージcom.cnblogs.mufasa.QA1_makeAhotDOU; インポートorg.junit.Test; インポートjava.util.Arrays、 パブリック クラス解決法1 { // 速度が、時間複雑度は約O(nlogn + N / 2)大丈夫ですされ 、 相対的なパフォーマンスであることが悪い 公共 静的 INT singleNumber1(INT [] NUMS){ は、Arrays.sort(NUMS); INT LEN = -nums.length 1。; のための(INT I = 0; I <LEN; = I + 2 ){ IF(NUMS [ !I]はNUMSは[Iは、+ = 1。]){ 戻りI]が[NUMSを; } } 戻りNUMS [LENを]; } // ***、時間複雑度は、O(N)最適化された溶液である 公共の 静的 INT singleNumber(INT [] NUMS){ int型の TEMP = NUMS [0 ;] のために(INT I = 1; IはNUMSに< .LENGTH; I ++ ){ TEMP ^ = NUMS [I]; } 戻りTEMP; } @Test 公共 ボイド試験(){ // NUMSのINT =新しい新しいINT [] [] {1,1,2,2,6,7 、7,6は}; int型 [] = NUMS 新しい新規 のint [] {4,1,2,1,2 }; のSystem.out.println(singleNumber(NUMS))。 System.out.println(singleNumber1(NUMS))。 } }
0.2モードを求めて
サイズを考えると n個 の配列、それらのすべての番号を見つけます。モード回アレイに表示される数よりも多い ⌊ n/2 ⌋
要素。
あなたは、配列が空であると仮定することができ、および会衆の指定された配列番号は常にあります。
以下のためのパッケージ変更com.cnblogs.mufasa.QA1_makeAhotDOU; インポートorg.junit.Test; インポートjava.util.Arrays; インポートjava.util.Map; インポートjava.util.TreeMapの、 パブリック クラス対処方法2 { // 完璧なソリューション、時間複雑さは、O(NlogN)に還元することができる 公共 のint majorityElement1(INT [] NUMS){ は、Arrays.sort(NUMS); 戻り [nums.length / 2 NUMSを]; } // 発生の更新頻度のサイズ、ソートするためのTreeMapを使用して 公衆 INT majorityElement(INT [] NUMS){ TreeMapの <整数、整数> = TreeMapの新しい新TreeMapの<> (); 以下のために(int型 i = 0; iはnums.length <; iは++ ){ 場合(!treeMap.get(NUMS [I])= NULL ){ treeMap.put(NUMS [I]、treeMap.get(NUMS [i])と 1 ); } 他{ treeMap.put(NUMS [i]が、 1 ); } } int型の LOC = -1、最大値= 0 。 用(のMap.Entry <整数、整数> KV:treeMap.entrySet()){ 場合(kv.getValue()> MAX){ LOC = kv.getKey()。 最大 = kv.getValue(); もし(MAX> nums.length / 2 ){ ブレーク。 } } } 戻りLOCと、 } @Test 公共 ボイドテストは(){ int型 [] NUMS = 新しい INT [] {2,2,1,1,1,2,2 }。 System.out.println(majorityElement1(NUMS))。 System.out.println(majorityElement(NUMS))。 } }
検索二次元マトリックスII 0.3
0.4 2つの順序付けられた配列をマージ
0.5エッグドロップ
1、文字列
1.1回文を確認し、[書かれた 'VEの、比較的簡単]
文字列を考えると、大文字小文字を無視することができる、唯一のアルファベットと数字を検討し、それが回文文字列であることを確認してください。
2、配列
3、ヒープ、スタック、キュー
4、リスト
5、ハッシュマップ
6、木
7、ソートおよび検索
8、動的プログラミング
9、グラフ理論
10、数学&ビットコンピューティング
11、アナログフェイス質問