我只是在练习一些MIT
Java作业。但是,我不确定如何找到第二大数字。http://ocw.csail.mit.edu/f/13
public class Marathon {
public static void main(String[] arguments) {
String[] names = { "Elena", "Thomas", "Hamilton", "Suzie", "Phil",
"Matt", "Alex", "Emma", "John", "James", "Jane", "Emily",
"Daniel", "Neda", "Aaron", "Kate" };
int[] times = { 341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412,
393, 299, 343, 317, 265 };
for (int i = 0; i < names.length; i++) {
System.out.println(names[i] + ": " + times[i]);
}
System.out.println();
System.out.println("Largest Timing " + Largest(times));
System.out.println();
}
public static int Largest(int[] times) {
int maxValue = times[0];
for (int i = 1; i < times.length; i++) {
if (times[i] > maxValue) {
maxValue = times[i];
}
}
return maxValue;
}
}
仅对数组进行排序以查找订单统计信息太浪费了。您可以通过遵循与现有算法相似的算法找到第二大元素,并使用一个代表第二大数字的附加变量。
当前,下一个元素可以大于最大值或等于/小于最大值,因此单个元素就if
足够了:
if (times[i] > maxValue) {
maxValue = times[i];
}
考虑两个变量,下一个元素可能是
必须特别注意初始状态。查看前两项,然后将较大的项分配给max
,将较小的项分配给第二大;如果有一个元素,则从第三个元素开始循环。
这是您如何编码它:
if (times[i] > maxValue) {
secondLargest = maxValue;
maxValue = times[i];
} else if (times[i] > secondLargest) {
secondLargest = times[i];
}
问题内容: 给定一个未排序的数组,您需要找到数组中o(n) 时间复杂度第二大的元素。 例如: 问题答案: 您可以对数组进行排序,然后返回数组中的倒数第二个元素,但这将在 o ( nlogn ) 时间内完成, 算法: 用最小可能值初始化最高和第二最高。 迭代数组。 如果当前元素大于最高 分配 secondHighest = 最高 分配最高 = currentElement 否则如果当前元素大于 se
问题内容: 我很难理解在数组中找到第二大数字的方法背后的逻辑。所使用的方法是在数组中找到最高的,但小于先前最高的(已经找到)。我仍然不明白的是为什么有必要。例如,我输入了三个数字:98、56、3。没有它,最高和第二高将都是98。请解释。 问题答案: 找到第二高实际上很简单: 这是O(N)一口气。如果你想接受联系,则更改为,但是如果数组中至少有2个元素,它将返回。如果数组仅包含相同的数字,它也将返回
问题内容: 我需要知道在对象数组中查找第二大元素的方法。例如 如果存在Book类的一系列对象,这些对象的属性如书名,价格,库存数量 我们如何列出价格第二高的书以及其他属性,例如名称和库存数量 问题答案: 做一个的从它,它的排序使用,并采取元素索引1。
我有一个阵列 我想找到数组第一列的最大值,84 这是我的整个代码,它给我这个数组中每列的最大值
问题内容: 我们需要在分配中递归地找到一个数组中的第二个最小整数。但是,为了更好地理解该主题,我想先通过本网站进行迭代,然后自己进行递归。 不幸的是,迭代地进行相当混乱。我知道该解决方案很简单,但我无法解决。 到目前为止,以下是我的代码: 这适用于一些数字,但不是全部。数字会变化,因为内部if条件的效率不如外部if条件的效率。 禁止阵列重排。 问题答案: 试试这个。当最小的数字是第一个时,第二个条
我的一个朋友问我关于他们的讲师作为练习给他们的一个编码挑战。我找到了一个解决办法。但我认为,对于一个简单的分类问题来说,这个解决方案太长了。所以,我想问一下,是否有更直接的方法来解决这个挑战。 具有函数third_greatest(),它接受一个字符串数组并返回第三大单词。因此,例如:如果数组是[“你好”、“世界”、“之前”、“中午”],则输出应该是“世界”,因为“之前”是六个字母长,“你好”和“