LintCode 貪心 主元素

2021-08-09 03:34:30 字數 578 閱讀 6022

點此進入題目

解題思路:該題目是要求元素出現的次數,如果乙個元素出現的次數嚴格大於陣列長度的一般,那麼該元素就稱為主元素。這個題目我也是求得比較簡單,就是求每個元素出現的次數,若該元素次數滿足條件,直接返回。否則判斷下乙個。

解題過程:給定乙個陣列,求得陣列長度的一半l;然後while迴圈,條件時陣列長度不為0;然後將第乙個元素賦值給a,迴圈陣列,求得元素a出現的次數max。並且刪除所有與元素a相同的元素。將符合條件的max返回。

**實現

int majoritynumber(vector&nums) }

if(max>l) return a; }

}注意事項:在得到相同的元素時,要將這個陣列刪除,不然會出現死迴圈。

個人理解:這道題還可以用map方式做,這樣陣列只需要迴圈一遍即可,但map迴圈好幾遍,但是比我的方法空間複雜度低,但是**比較麻煩;用map聯絡元素和出現的次數,迴圈陣列,搜尋map,若改元素存在,那麼次數加一,若不存在那麼插入,次數修改為1。

Lintcode 刪除元素

給定乙個陣列和乙個值,在原地刪除與值相同的數字,返回新陣列的長度。元素的順序可以改變,並且對新的陣列不會有影響。example 1 input value 0 output 0 example 2 input 0,4,4,0,0,2,4,4 value 4 output 4 explanation ...

刪除元素(LintCode)

刪除元素 給定乙個陣列和乙個值,在原地刪除與值相同的數字,返回新陣列的長度。元素的順序可以改變,並且對新的陣列不會有影響。樣例給出乙個陣列 0,4,4,0,0,2,4,4 和值 4 返回 4 並且4個元素的新陣列為 0,0,0,2 思路就是把除刪除元素外的元素移到最左邊,r是最右端非被刪除元素,可以...

尋找主元素

如果乙個陣列a 1.n 中超過半數的元素都相同時,該陣列被稱為含有主元素。演算法思想 利用快速排序的思想,如果這個陣列存在主元素,則它一定為排序後的中位數。但問題是,我們要設計o n 演算法,我們知道,排序的最優時間複雜度是o nlogn 所以我們需要借助其他的方法來完成這個問題。我們可以想到快速排...