gpt4 book ai didi

c# - 是否有可能使用单次传递获得列表中的 2 个最大数字?

转载 作者:太空狗 更新时间:2023-10-29 18:02:25 24 4
gpt4 key购买 nike

是否可以找到数组中最大的 2 个数字,并且只循环遍历集合一次?

我曾将其作为面试问题,但没有及时得到它。

最佳答案

看起来很简单..

int[] nums = { 3, 1, 4, 1, 5, 9, 2, 6 };

int max1 = -1;
int max2 = -1;
foreach (int num in nums)
{
if (num > max1) { max2 = max1; max1 = num; }
else if (num > max2) { max2 = num; }
}

例如:

// 3: max2 = -1; max1 = 3;
// 1: max2 = 1;
// 4: max2 = 3; max1 = 4;

快速解释:

  • 将 -1 定义为占位符,可以使用 int.MinValue,或者更好的是使用单独的 bool 来指示不匹配
  • 如果测试的值大于当前最大值(max1),将当前最大值赋给max2,新值赋给max1
  • 否则 if 必须更小,但如果它大于第二个最大值,则为 max2 分配新值

关于c# - 是否有可能使用单次传递获得列表中的 2 个最大数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com