zoukankan      html  css  js  c++  java
  • LeetCode--414--第三大的数

    问题描述:

    给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。

    示例 1:

    输入: [3, 2, 1]
    
    输出: 1
    
    解释: 第三大的数是 1.
    

    示例 2:

    输入: [1, 2]
    
    输出: 2
    
    解释: 第三大的数不存在, 所以返回最大的数 2 .
    

    示例 3:

    输入: [2, 2, 3, 1]
    
    输出: 1
    
    解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
    存在两个值为2的数,它们都排第二。

    方法1:

     1 class Solution(object):
     2     def thirdMax(self, nums):
     3         """
     4         :type nums: List[int]
     5         :rtype: int
     6         """
     7         nums.sort()
     8         if len(set(nums)) < 3:
     9             return nums[-1]
    10         nums = nums[::-1]
    11         i,j,index = 0,1,0
    12         while i < len(nums):
    13             j = i + 1
    14             while j < len(nums) and nums[i] == nums[j]:
    15                 j += 1
    16             index += 1 #当相邻两数不相等时+1,两次不相等即找到了第三大的数字
    17             i = j
    18             if index == 2:
    19                 return nums[j]      

    方法2:

     1 class Solution(object):
     2     def thirdMax(self, nums):
     3         """
     4         :type nums: List[int]
     5         :rtype: int
     6         """
     7         nums.sort()
     8         new_set = set(nums)
     9         if len(new_set) < 3:
    10             return nums[-1]
    11         nums = nums[::-1]
    12         new_set.remove(max(new_set))
    13         new_set.remove(max(new_set))
    14         return max(new_set)    

    方法3:

     1 class Solution(object):
     2     def thirdMax(self, nums):
     3         """
     4         :type nums: List[int]
     5         :rtype: int
     6         """
     7         nums = list(set(nums))
     8         nums.sort()
     9         if len(nums) <= 2:
    10             return nums[-1]
    11         else:
    12             return nums[-3]

    2018-10-01 08:42:29

  • 相关阅读:
    3.22
    练习 3.16
    简单工厂模式
    Java-不可变字符串
    java中的缓冲流
    TCP协议下java通信
    nginx优化
    nginx反向代理
    shell-for循环
    shell-数组
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9734034.html
Copyright © 2011-2022 走看看