题解 | #类似将链表以某个值分开#
牛的品种排序IV
https://www.nowcoder.com/practice/bd828af269cd493c86cc915389b02b9f
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode sortCowsIV (ListNode head) { // write code here // 1. 处理特殊情况 if (head == null || head.next == null) return head; // 2. 遍历处理 ListNode bs = null, as = null; ListNode be = null, ae = null; while (head != null) { if (head.val == 0) { if (bs == null) { bs = head; be = head; } else { be.next = head; be = be.next; } } else { if (as == null) { as = head; ae = head; } else { ae.next = head; ae = ae.next; } } head = head.next; } // 3. 处理特殊情况 if (bs == null) return as; be.next = as; if (ae != null) ae.next = null; return bs; } }