如何在不删除最大元素并再次搜索的情况下找到以上内容?有没有更有效的方法可以做到这一点?这些元素是否重复并不重要。

最佳答案

for (e: all elements) {
 if (e > largest) {
   second = largest;
   largest = e;
 } else if (e > second) {
   second = e;
 }
}

您可以将largestsecond初始化为适当的下限,也可以初始化为列表中的前两项(检查哪个更大,不要忘记检查列表中是否至少有两项)

关于c++ - 查找范围中的最大和第二大元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1412751/

10-10 12:33