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

在這裏插入圖片描述
相對快一點


求點贊

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