简单介绍下逻辑
其实就是一个时间复杂度为O(n)的一个算法
先指定两个最小值分别是列表可能的最大值,然后遍历数组里面的每一个元素。
如果元素小于最小的那个,那么第二小的那个就是现在最小的那个值,最小的那个值就是当前元素;
如果元素小于第二小的那个,那么第二小的那个就是当前元素。
直到遍历完,也就找到了第一小和第二小的两个元素了。
def second_smallest(input_list):
if len(input_list) < 2:
raise
first_smallest = INT_MAX
second_smallest = INT_MAX
for i in input_list:
if i < first_smallest:
second_smallest = first_smallest
first_smallest = i
elif i < second_smallest:
second_smallest = i
return second_smallest
当然也有其他方案,比如说先排序再取值
代码最简单的当然是
def second_smallest(input_list):
if len(input_list) < 2:
raise
input_list.sort()
return input_list[1]
哈哈哈
当然也可以min取到最小值pop掉,再取下min,方法非常多。
方法总比困难多,欧耶!