把list分成两个 一个before 一个after 最后在合并; import java.util.*; public class Main { public static ListNode partition(ListNode node, int part) { ListNode head = new ListNode(0); ListNode result = head; head.next = node; ListNode bigNode = new ListNode(0); ListNode headBig = bigNode; while(head.next != null) { if(head.next.val < part) { head = head.next; } else { bigNode.next = head.next; bigNode = bigNode.next; head.next = head.next.next; } } bigNode.next = null; head.next = headBig.next; return result.next; } public static void main(String[] args) { ListNode node = new ListNode(3); node.next = new ListNode(5); node.next.next = new ListNode(8); node.next.next.next = new ListNode(5); node.next.next.next.next = new ListNode(10); node.next.next.next.next.next = new ListNode(2); node.next.next.next.next.next.next = new ListNode(1); printList(node); ListNode result = partition(node, 5); printList(result); return; } //自己创建的结构要自己注意打印; public static void printList(ListNode node) { while(node != null) { System.out.print(node.val); node = node.next; } System.out.println('.'); } }
public class ListNode { public int val; public ListNode next; public ListNode(int val) { this.val = val; } }