經典6鲂令蛉!5. Kth Largest Element !!!

image.png
  1. 解法一,排序然后返回第k大
    重點是降序的表示方法: greater<int> ()
class Solution {
public:
    /*
     * @param n: An integer
     * @param nums: An array
     * @return: the Kth largest element
     */
    bool cmp(int a, int b){
            return a > b;
        }
    int kthLargestElement(int n, vector<int> &nums){
        // write your code here
        sort(nums.begin(), nums.end(), greater<int> ());
        return nums[n-1];
    }
};

或者:

  1. heapsort
    這個解法在lintcode上一直報錯狡恬,leetcodeAC
  2. Kth Largest Element in an Array
class Solution {
public:
    void heapify(vector<int> &nums, int heapsize, int index){
        int largest = index;
        int left = 2 * largest + 1;
        int right = 2 * largest + 2;
        if(nums[left] > nums[largest] && left < heapsize){
            largest = left;
        }
        if(nums[right] > nums[largest] && right < heapsize){
            largest = right;
        }
        if(largest != index){
            swap(nums[index], nums[largest]);
            heapify(nums, heapsize, largest);
        }
        
    }
    
    int findKthLargest(vector<int>& nums, int k) {
        int hp_size = nums.size();
        for(int i = hp_size/2 - 1; i >= 0; i--){
            heapify(nums, hp_size, i);
        }
        for(int i = 0; i < k; i++){
            swap(nums[0], nums[hp_size - 1]);
            hp_size--;
            heapify(nums, hp_size, 0);
        }
        return nums[hp_size];
    }
    
};
  1. quickselect
class Solution {
public:
    /*
     * @param n: An integer
     * @param nums: An array
     * @return: the Kth largest element
     */
    int partition(vector<int> &nums, int left, int right){
        int pivot = nums[left];
        int l = left + 1;
        int r = right;
        while(l <= r){
            if(nums[l] < pivot && nums[r] > pivot){
                swap(nums[l++],nums[r--]);
            }
            if(nums[l] >= pivot ){
                l++;
            }
            if(nums[r] <= pivot  ){
                r--;
            }
        }
        swap(nums[left], nums[r]);
        return r;
    }
    int kthLargestElement(int n, vector<int> &nums) {
        // write your code here
        int left = 0;
        int right = nums.size() - 1;
        while(1){
            int index = partition(nums,left,right);
            if(index == n-1){
                return nums[n-1];
            }
            if(index > n - 1){
                right = index - 1;
            }
            else{
                left = index + 1;
            }
        }
    }
};
  1. priority_queue
class Solution {
public:
    /*
     * @param n: An integer
     * @param nums: An array
     * @return: the Kth largest element
     */
    int kthLargestElement(int n, vector<int> &nums) {
        // write your code here
        priority_queue<int> pq(nums.begin(),nums.end());
        for(int i = 0 ; i < n - 1; i++){
            pq.pop();
        }
        return pq.top();
    }
};
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末珠叔,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子弟劲,更是在濱河造成了極大的恐慌祷安,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兔乞,死亡現場離奇詭異汇鞭,居然都是意外死亡凉唐,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門霍骄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來台囱,“玉大人,你說我怎么就攤上這事读整〔狙担” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵米间,是天一觀的道長强品。 經常有香客問我,道長车伞,這世上最難降的妖魔是什么择懂? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮另玖,結果婚禮上困曙,老公的妹妹穿的比我還像新娘。我一直安慰自己谦去,他們只是感情好慷丽,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鳄哭,像睡著了一般要糊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妆丘,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天锄俄,我揣著相機與錄音,去河邊找鬼勺拣。 笑死奶赠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的药有。 我是一名探鬼主播毅戈,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愤惰!你這毒婦竟也來了苇经?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤宦言,失蹤者是張志新(化名)和其女友劉穎扇单,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體奠旺,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡令花,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年阻桅,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兼都。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫂沉,死狀恐怖,靈堂內的尸體忽然破棺而出扮碧,到底是詐尸還是另有隱情趟章,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布慎王,位于F島的核電站蚓土,受9級特大地震影響,放射性物質發(fā)生泄漏赖淤。R本人自食惡果不足惜蜀漆,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咱旱。 院中可真熱鬧确丢,春花似錦、人聲如沸吐限。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诸典。三九已至描函,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狐粱,已是汗流浹背舀寓。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肌蜻,地道東北人互墓。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像宋欺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胰伍,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容