Java 实现单链表负整数前移算法
下面是一个使用 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]
原文地址: https://www.cveoy.top/t/topic/pgWd 著作权归作者所有。请勿转载和采集!