下面是一个使用 Java 实现的算法,可以将所有负整数的元素移动到其他元素前面:

import java.util.LinkedList;

public class MoveNegativeNumbers {

    public static void main(String[] args) {
        LinkedList<Integer> L = new LinkedList<>();
        L.add(1);
        L.add(2);
        L.add(-1);
        L.add(-2);
        L.add(3);
        L.add(-3);
        L.add(4);

        moveNegativeNumbers(L);

        System.out.println(L);
    }

    public static void moveNegativeNumbers(LinkedList<Integer> L) {
        int i = 0;
        int j = 0;

        while (j < L.size()) {
            if (L.get(j) < 0) {
                int temp = L.get(i);
                L.set(i, L.get(j));
                L.set(j, temp);
                i++;
            }
            j++;
        }
    }
}

该算法使用两个指针i和j,初始时都指向链表的起始位置。指针i用于记录下一个负整数应该插入的位置,指针j用于遍历链表。当指针j指向的元素为负整数时,将该元素与指针i指向的元素交换位置,并将指针i向后移动一位。这样,遍历结束后,所有负整数的元素都会被移动到其他元素的前面。

输出结果为:[-1, -2, -3, 1, 2, 3, 4]

Java 实现单链表负整数前移算法

原文地址: https://www.cveoy.top/t/topic/pgWd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录