Lintcode算法练习:479.数组第二大数

479.数组第二大数

题目

描述
在数组中找到第二大的数。
注意:可以假定至少有两个数字,第二大的数是指降序数组中第二个数字。
样例
example 1:
input: [1,3,2,4]
output: 3
example 2:
input: [1,1,2,2]
output: 2

题解

思路

  • 方法1:直接利用list.sort()排列数组,返回结果中第二个数;
  • 方法2:遍历整个数组,不断更新最大和次大数值;

步骤

  • 方法一:从略,仅是对list.sort()的应用;
  • 方法二:
    i. 首先确定数组的最大和次大(nums[0],nums[1]);
    ii. 然后遍历数组 :
    • 若数值大于最大,则次大为此时最大,最大等于该数值;
    • 若数值仅大于次大,则仅更新最大;

iii. 返回次大;

程序

def secondMax(nums:list):
    # method 1
    nums.sort(reverse = True)
    return nums[1]

    # method 2
    fmax,smax = nums[0],nums[1]
    lens = len(nums)
    for i in range(1,lens):
        #数值大于最大值,需同时更新最大和次大
        if nums[i] >= fmax:
            smax = fmax
            fmax = nums[i]
        #数值仅大于次大值,仅需更新次大
        elif nums[i] > smax:
            smax = nums[i]
    return smax
发布了4 篇原创文章 · 获赞 0 · 访问量 9

猜你喜欢

转载自blog.csdn.net/hersheya/article/details/105474217