原文:給你一個長度為 n 的數組,其中只有一個數字出現了大於等於 n/2 次,問如何使用優秀的 時空復雜度快速找到這個數字。

思路一: 如果我們把眾數記為 ,遇到相同數就加 ,遇到不同的數就減 ,把其他數記為 ,將它們全部加起來,顯然和大於 ,從結果本身我們可以看出眾數比其他數多。 使用for循環取值幾個數也許就查找到了。 方法二:哈希表使用hashtab 實現計數也行。 我們使用哈希映射 HashMap 來存儲每個元素以及出現的次數。對於哈希映射中的每個鍵值對,鍵表示一個元素,值表示該元素出現的次數。 ...

2020-07-26 13:15 0 603 推薦指數:

查看詳情

給定一個長度N數組,找出出現次數大於n/2,n/3的數,要求時間復雜度O(n),空間復雜度O(1)

  先討論出現次數大於n/2的數字,如果這樣的數字存在,那么這個數出現的次數大於其他數出現的次數的總和。 在數組A中,我們定義兩個數據集合a1,a2。a1為出現次數大於n/2的數的集合,a2為其余數組成的集合。對於數組 A中元素a、b,假設a不等於b,那么有兩種情況,分別為:a屬於a1,b屬於 ...

Fri Nov 01 04:59:00 CST 2019 0 300
一個整型數組里除了一個或者兩個或者三個數字之外,其他的數字出現了兩。請寫程序找出這兩個只出現數字。要求時間復雜度是O(n),空間復雜度是O(1)

粗糙的給出了分析,最近比較累,以后會改進的。 題目中包括三個小的問題,由簡單到復雜: 1,如果只有一個出現,考察到異或的性質,就是如果同一個數字和自己異或的活結果為零,那么循環遍歷一遍數組,將數組中的元素全部做異或運算,那么出現數字全部異或掉了,得到的結果就是只出現 ...

Fri May 01 17:15:00 CST 2015 0 2374
[java實現]找一個數組的最大和的連續子數組(時間復雜度 O(n))

收藏一下,請直接點擊原帖地址:http://blog.csdn.net/hpf911/article/details/9275583 這是《劍指Offer》中的一道題目,數組中的元素可能是正負,所以連續的子組求和,會變大也可能變小,解題時首先要求當前的和(初始值為0)和下一個元素求和后 ...

Sun Apr 24 07:15:00 CST 2016 0 2571
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM