簡體   English   中英

在不排序的情況下,在n個數字的數組/列表中找到3個最大的數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM