O(N)的极速题解 Python3 C++-至少是其他数字两倍的最大数-力扣题解

贪心算法,只要遍历一遍,遍历第一项的时候即把它当作最大项,以后如果出现更大的,再将最大项设置为它。同时有一个flag记录是否符合大两倍的条件。
c++代码

class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        if (nums.size() == 0) return -1;
        if (nums.size() == 1) return 0;
        int max_index = 0;
        bool flag = true;
        for (int i=1;i<nums.size();i++){
            if (nums[max_index] > nums[i]){
                if (flag)
                    flag = nums[max_index] >= 2 * nums[i];
            }
            else{
                flag = nums[i] >= 2 * nums[max_index];
                max_index = i;
            }

        }
        if (!flag) return -1;
        else return max_index;
    }
};

在这里插入图片描述
虽然有点慢,但也是通过👍
Python代码:

class Solution:
    def dominantIndex(self, nums: List[int]) -> int:
        if len(nums)== 0:
            return -1 
        if len(nums) == 1:
            return 0 
        max_index = 0
        flag = True
        for i in range(1,len(nums)):          
            if nums[max_index] > nums[i]:
                if flag:
                    flag = nums[max_index] >= 2 * nums[i] 
            else:
                flag = nums[i] >= 2 * nums[max_index]
                max_index = i
        if not flag:
            return -1 
        else:
            return max_index

在这里插入图片描述
相对快一点


求点赞

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