two pass

class Solution:
    def dominantIndex(self, A: List[int]) -> int:
        """ O(N)/O(1)
        1. find largetst val and idx
        2. compare with all other elements
    
        """
        # two pass 
        max_v = max_i = 0
        for i in range(len(A)):
            if A[i] > max_v:
                max_v = A[i]
                max_i = i 
                
        for a in A:
            if a != max_v and a*2 > max_v:
                return -1
        return max_i
    

one pass : main idea is to find largets number and second largetst number and make sure second largest number’s 2 times is not bigger than largetst number

class Solution:
    def dominantIndex(self, A: List[int]) -> int:
        # one pass
        """ O(N)/O(1)
        1.edge case N == 1 
        2. find fst and snd ptr's idx 
        3. loop through, keep updating larget number's index;  meanwhile updating snd largets number's idx by checking (1) before fst updating (2) snd <val < fst 
        """ 
        if len(A) == 1:
            return 0
        if A[0] > A[1]:
             fst,snd = 0,1
        else:
             fst,snd = 1,0
        for i in range(2,len(A)):
            if A[fst] < A[i]:
                snd = fst
                fst = i
            elif A[i] > A[snd]:
                snd = i 
        return fst if A[snd]*2 <= A[fst] else -1