169 多數元素 c 實現 6種方法

2021-10-09 06:38:31 字數 1498 閱讀 3052

寫在前面,小白從零刷題,在解答會寫出思路,正確答案,以及所有使用到的語法和知識點

思路就是找超到過一半的那個數字

當然這個對於特殊構造的例子可能不友好,時間複雜度為o(n^2)

class

solution

return0;

}};

1.思路就是一旦乙個數超過一半,那麼排序後無論如何都在中間

class

solution

};

1.思路就是把原來的vector容器放在雜湊表裡面,然後遍歷陣列,計算每乙個出現的數的次數,儲存到key中去,然後判斷如果計算大於一半就停止遍歷,這個可以同時進行,不需要先完全存好,可以一邊查詢一邊遍歷。

class

solution

return-1

;}};

思路就是簡單來說很關鍵的乙個地方就是因為是眾數,所以,我們採用隨機法去大概率能找到符合要求的數,而且能規避一些特殊的資料

class

solution

return-1

;}};

1.思路就是將其分為兩個陣列,分別找到它們的眾數,分治,花了一天的時間感覺有點浪費時間,哎,不知掉該怎麼辦,感覺沒法想出來這個方法

class

solution

intfind_most

(vector<

int>

& nums,

int low,

int high)

//定義形參,不是特別會

intcount_most

(vector<

int>

&nums,

int target,

int l,

int h)

return count;}}

;

摩爾投票法的關鍵在於將多數和少數分為戰士的雙方,選擇開始的乙個數,作為候選人,遇到該數加1,遇到異類減1,如果減到0,那麼也沒事,選擇當時的數再次當選為候選人。總體的思路就是因為最後的數一定是候選人且》0.

class

solution

return candidate;}}

;

遇到陣列的乙個新的思路就是思考一下排序後的情況會如何

雜湊表用來查詢和計數確實是一種比較好的方法

如果某個方法的某個**看不懂,可以再看看別的同型別的**

分治法總體來說感覺有點難想,之後再說吧

想不出來的題目,也要先看思路,看能否自己實現。

在刷題的時候,突然想到不應該用太多方法,起碼在我剛起步的階段不能使用多種方法,畢竟在面試中有可能遇到原題,所以應該先刷,其次,對一道題使用太多的方法會導致自己的成就感降低,所以暫時覺得應該先對每一道題,使用一種比較最優的方法和大眾的方法。

另外乙個思考就是我們應該用什麼方法來去刷題呢,是按照資料結構的型別還是演算法的型別呢

169 多數元素 c

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 基本思路 摩爾投票演算法是基於這個事實 每次從序列裡選擇兩個不相同的數字刪除掉 或稱為 抵消 最後剩下乙個數字...

LeetCode 169 多數元素(C )

3 解題提示 4 解題思路 5 原始碼詳解 c 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數 大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。輸入 3,2,3 輸出 3 輸入 2,2,1,1,1,2,2 輸出 2 嘗試設計時間複雜度為 o ...

力扣169 多數元素(hashmap實現

如題 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數 大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 如下 示例 class solution els...