欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

九章算法 | 拼多多面试题:前三大数

程序员文章站 2022-07-14 12:22:13
...

【题目描述】

取出数组中最大的三个数

在线评测地址: LintCode 领扣

样例 :

        输入:  [1000,1000,1000,999,998]
输出:  [1000,999,998]
      

【题解】

利用set在完成去重的同时完成排序,获取set中最大的三个数字即可

        public class Solution {
    /**
     * @param arr: An array
     * @return: Get the three largest numbers in the array
     */
    public List<Integer> TopThree(List<Integer> arr) {
        TreeSet<Integer> tmp = new TreeSet<Integer>();
        for (int k:arr) {
            tmp.add(k);
        }
        Iterator<Integer> it = tmp.descendingIterator();
        List<Integer> res = new ArrayList<Integer>();
        int cou = 0;
        while(it.hasNext() && cou < 3){
            res.add(it.next());
            cou++;
        }
        return res;
    }
}
      

更多语言代码参见:九章算法