java:在链表中对相邻的重复值进行排序

k4ymrczo  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(316)

所以我想做一个方法,把重复的值放在一起。我做的方法可以做到这一点,但问题是它排序从低到高的名单。这是我的职责

private static void addValue(int val) {

         if (llist.size() == 0) {
             llist.add(val);
         } else if (llist.get(0) > val) {
             llist.add(0, val);
         } else if (llist.get(llist.size() - 1) < val) {
             llist.add(llist.size(), val);
         } else {
             int i = 0;
             while (llist.get(i) < val) {
                 i++;
             }
             llist.add(i, val);
         }

    }

我的当前输出如下所示:用户输入:5
链表:[5,]
用户输入:4
链表:[4,5]
用户输入:3
链表:[3,4,5]
用户输入:5
链表:[3,4,5,5]
用户输入:3
链表:[3,3,4,5,5]
我想要的输出应该是:
用户输入:5
链表:[5,]
用户输入:4
链表:[5,4]
用户输入:3
链表:[5,4,3]
用户输入:5
链表:[5,5,4,3]
用户输入:3
链表:[5,5,4,3,3]

lrl1mhuk

lrl1mhuk1#

像这样的事情应该可以做到:

private static void addValue(int val) {
    int idx = llist.indexOf(val);
    if (idx == -1)
        llist.add(val);
    else
        llist.add(idx, val);
}

基本上, llist.indexOf(val) 给出中第一项的索引 llist 匹配的 val ,如果没有匹配项,则为-1。因此,如果已经有一个匹配的项目,我们插入 val 在该地点;否则,我们将它添加到末尾。

相关问题