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;
    }
};

 

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