: 输入一个无序数组datal,且数组中无重复元素,查找出第二大元素。要求: 时间复杂度为O(n)。
时间: 2023-05-21 09:03:06 浏览: 183
Python要求O(n)复杂度求无序列表中第K的大元素实例
可以使用一次遍历的方法来解决这个问题。我们可以定义两个变量,一个用来存储当前最大值,一个用来存储当前第二大的值。我们遍历整个数组,如果当前元素比最大值大,那么将当前最大值赋值给第二大值,将当前元素赋值给最大值。如果当前元素比第二大值大,那么将当前元素赋值给第二大值。最后返回第二大值即可。
以下是代码实现:
```python
def find_second_largest(datal):
if len(datal) < 2:
return None
largest = datal[0]
second_largest = None
for i in range(1, len(datal)):
if datal[i] > largest:
second_largest = largest
largest = datal[i]
elif second_largest is None or datal[i] > second_largest:
second_largest = datal[i]
return second_largest
```
时间复杂度为O(n)。
阅读全文