📅  最后修改于: 2023-12-03 15:37:47.340000             🧑  作者: Mango
在一个单向链表中,查找出最大值和第二大值是一个常见问题。这个问题可以通过遍历整个链表并记录最大值和第二大值来解决。
以下是查找最大和第二大值的算法设计步骤:
以下是在C++中实现查找最大和第二大的值的代码片段:
int first_max = INT_MIN; // 初始化最大值为最小整数值
int second_max = INT_MIN; // 初始化第二大值为最小整数值
Node* current = head; // 从链表的头结点开始遍历
while (current != nullptr) {
if (current->data > first_max) {
second_max = first_max;
first_max = current->data;
} else if (current->data > second_max) {
second_max = current->data;
}
current = current->next;
}
时间复杂度是 $O(n)$,因为需要遍历整个链表。