假設有打亂順序的一群人站成一個隊列。 每個人由一個整數對(h, k)表示,其中h是這個人的身高,k是排在這個人前面且身高大於或等於h的人數。 編寫一個算法來重建這個隊列。


注意:
總人數少於1100人。

示例

輸入:
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

輸出:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

 
    public static void main(String[] args)  {

        List<Person> personList = new ArrayList<>();
        Person person = new Person();
        person.setHeight(7);
        person.setNum(0);
        personList.add(person);

        person = new Person();
        person.setHeight(4);
        person.setNum(4);
        personList.add(person);

        person = new Person();
        person.setHeight(7);
        person.setNum(1);
        personList.add(person);

        person = new Person();
        person.setHeight(5);
        person.setNum(0);
        personList.add(person);

        person = new Person();
        person.setHeight(6);
        person.setNum(1);
        personList.add(person);

        person = new Person();
        person.setHeight(5);
        person.setNum(2);
        personList.add(person);


        Collections.sort(personList, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                if(o1.getHeight() == o2.getHeight()){
                    return o1.getNum() - o2.getNum();
                }
                return o2.getHeight() - o1.getHeight();
            }
        });

        List<Person> list = new LinkedList<>();
        for (Person p : personList) {
            list.add(p.getNum(),p);
        }

        System.out.println(list);


    }

 



作者:A_Zeee
鏈接:https://www.jianshu.com/p/1faee3c9d630
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM