Largest Number At Least Twice of Others(C++至少是其他數字兩倍的最大數)

解題思路:

(1)維持兩個最大值指針,一個表示當前最大值max,一個表示當前第二大值premax

(2)最後判斷max>=2*premax,靈感來自於鏈表中的指針操作

(3)最後需要注意的是題目限制了最大值只有一個

class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        if(nums.size()==0) return -1;
        int premax = INT_MIN,max= INT_MIN;
        int index = 0;
        for(int i=0;i<nums.size();i++) {
            if(nums[i]>=max) {
                premax = max;
                max = nums[i];
                index = i;
            } else {
                if(nums[i]>premax) premax = nums[i];
            }
        }
        if(nums.size()==1||max>=2*premax) return index;
        else return -1;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章