[英]Finding the 3 largest numbers in an array/list of n numbers without the sorting
當我做作業時,當我不得不在數字列表(未指定數據結構)中找到最大的3個數字時,我會感到非常困惑。 我對自己要做的事完全感到震驚。 有什么幫助嗎?
您可以保留三個變量來存儲三個最大值,並遍歷數組:
您需要注意以下三種情況:
當當前元素大於最大元素時。 需要相應地更新第二和第三大。
當前元素大於第二大元素時。 需要更新第三大。
當前元素大於第三大元素時。
我的代碼,如果你仍然卡住
for(int i : array)
if(i > largest)
//Do smt
else if(i > second)
//Do smt
else if(i > third)
//Do smt
int firstNumber=5;
int secondNumber=3;
int thirdNumber=4;
int largestNumber=(firstNumber>secondNumber)?firstNumber:(secondNumber>thirdNumber)?secondNumber:thirdNumber;
System.out.println("largestNumber : "+largestNumber);
真正簡單的方法:
List<Number> numbers = new ArrayList<Number>();
numbers.add(5);
numbers.add(4);
numbers.add(3);
numbers.add(2);
numbers.add(1);
numbers.add(6);
SortedSet<Number> sortedNumbers= new TreeSet<Number>();
sortedNumbers.addAll(numbers);
SortedSet<Number> subSet = sortedNumbers.subSet(sortedNumbers.size()-2, sortedNumbers.size()+1);
for (Number subSet1 : subSet) {
System.out.println(""+subSet1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.