leetcode 414 Third Maximum Number

Jun 3, 2017


leetcode 414

class Solution(object):
    def thirdMax(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        m1=0
        m2=0
        m3=0
        init_num = 0
        for v in nums:
            if init_num == 0:
                m1=v
                init_num=1
            elif init_num == 1:
                if v != m1:
                    s1=m1
                    m1=max(s1,v)
                    m2=min(s1,v)
                    init_num = 2
            elif init_num == 2:
                if v != m1 and v != m2:
                    s = m1 + m2 + v
                    s1=m1
                    s2=m2
                    m1 = max(s1,s2,v)
                    m3 = min(s1,s2,v)
                    m2 = s - m1 - m3
                    init_num = 3
            elif init_num == 3:
                if v!= m1 and v != m2 and v != m3:
                    if v > m1:
                        m3 = m2
                        m2 = m1
                        m1 = v
                    elif v > m2:
                        m3 = m2
                        m2 = v
                    elif v > m3:
                        m3 = v
        if init_num == 1:
            return m1
        elif init_num == 2:
            return m1
        else:
            return m3