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

  • 相关阅读:
    Mysql之锁、事务绝版详解干货!
    SSL基础知识(比较清楚)
    数字证书使用流程指南
    HTTPS与SSL
    IIS 6.0 Web园(Web Garden)
    验证数字可以有千分符可以有0个1个小数点小数点后输入后四舍五入保留两位(写个js验证真费劲)
    线程安全
    利用SSL给IIS加把锁(转)
    弹出div后其它不能操作(小技巧)
    关于反射
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9734034.html
Copyright © 2011-2022 走看看