当前位置: 首页 > 面试题库 >

第二高的数字ArrayList

夏侯瑞
2023-03-14
问题内容

所以到目前为止,我得到了以下代码:

int secondLargest = list.get(0);
int largest = list.get(0);
for (int i = 0; i < list.size(); i++)
{
    if(list.get(i) > largest)
    {
        secondLargest = largest;
        largest = list.get(i);

        if(list.get(i) > secondLargest && list.get(i) != largest)
        {
            secondLargest = list.get(i);
        }
    }
}

System.out.print("Second biggest number ");
return secondLargest;

问题是当我使用此代码时(列表为:)

list2.add(1);
list2.add(2);
list2.add(10);
list2.add(9);
list2.add(8);
list2.add(7);

第二个最高数字的“搜索”停止于2,因为10是最高数字。我该如何解决?


问题答案:

将第二个if condition条件放在第一个条件条件之外。

因为second largest小于,largest所以您永远不会在if检查最大值的块中找到它。

int secondLargest = (int) list.get(0);
int largest = list.get(0);
for (int i = 1; i < list.size(); i++) {
  if(list.get(i) > largest) {
    secondLargest = largest;
    largest = list.get(i);
  }
  if(list.get(i) > secondLargest && list.get(i) != largest) {
    secondLargest = list.get(i);
  }
}
System.out.print("Second biggest number ");
return secondLargest;


 类似资料:
  • 问题内容: 我很难理解在数组中找到第二大数字的方法背后的逻辑。所使用的方法是在数组中找到最高的,但小于先前最高的(已经找到)。我仍然不明白的是为什么有必要。例如,我输入了三个数字:98、56、3。没有它,最高和第二高将都是98。请解释。 问题答案: 找到第二高实际上很简单: 这是O(N)一口气。如果你想接受联系,则更改为,但是如果数组中至少有2个元素,它将返回。如果数组仅包含相同的数字,它也将返回

  • 如果用户通过cmd输入以下数字:< code>2 -13 4 12 -1 113 19,则输出应为: 但我得到的是这个: 即该对中的第二个数字再次重复自己作为下一对中的第一个数字。代码有什么问题?

  • 我想取904并做9+0,但904是一个int变量。我确实尝试了下面的代码,但是如果用户更改了数字I,它并不总是有效的。

  • 问题内容: 假设我有一个类似于以下表格: 项目组会定期添加。当添加一组项目时,它们都添加有相同的“时间”字段。本质上,“时间”充当该项目组的唯一索引。 我想选择时间第二高的项目组。在此示例中,我的查询应拉出“ B”项。我知道我可以做max()来选择“ A”项目,但是我不知道我该怎么做倒数第二。 如果这意味着任何内容,我的“时间”列将存储为TIMESTAMP。 问题答案: 您可以尝试类似:

  • 问题内容: 如果这是一个简单的问题,我深表歉意,但是当第一个数字小于第二个数字时,我很难理解模数除法的概念。例如,当我的书中1%4的剩余数为1时,我不知道1%4的剩余数如何为1。1 / 4为0.25。我是否在错误考虑模数除法? 问题答案: 首先,在Java中,%是余数(不是模)运算符,其语义略有不同。就是说,您需要考虑仅整数除法,就好像没有小数。可以将其视为不可分割的项目:您可以将零个大小为4的项

  • 问题内容: 我在此站点上找到此代码以查找第二大数字: 是否可以修改此代码以找到第二个 最小的 数字?所以举个例子 问题答案: 确实可以修改该函数以找到第二个最小的函数: 旧版本依赖于Python 2实施细节,该细节始终排在其他任何东西之前(因此测试为“较小”);我取代了使用作为前哨,为无穷大总是测试, 更大的 比任何其它号码。理想情况下,应该使用原始函数代替原始函数,以免与其他Python实现可能

  • 问题内容: 假设您得到以下名为Employee的简单数据库表,该表具有2个列,分别名为Employee ID和Salary: 我想写一个查询,从员工那里选择max(salary)作为max_salary,2nd_max_salary 然后它应该返回 我知道如何找到第二高的薪水 或找到第n个 但我无法弄清楚如何将这2个结果结合起来以获得所需的结果 问题答案: 您可以只运行2个查询作为内部查询以返回2

  • 问题内容: 我有这张桌子: 如何为每个名称获得年份第二高的行,如下所示: 我尝试了以下查询,但没有成功: 上一个查询给了我这个错误:“ SQL错误(1235):此版本的MySQL尚不支持’LIMIT&IN / ALL / ANY / SOME子查询’” 而且我现在无法更改MySQL版本(5.6.25),因为该解决方案已经投入生产。 有什么帮助吗? 问题答案: 在MySQL中,每个组求解n的一种方法