题解 | #牛群分隔# Java
牛群分隔
https://www.nowcoder.com/practice/16d9dc3de2104fcaa52679ea796e638e
就是新构造两个链子,分别存小于x的和大于等于x的,最后把两个链子合起来
学到的东西:
- 用临时ListNode 存储head的next,用完了再赋值给head
- 注意断开节点之前的链子 防止干扰
public class Solution { public ListNode cow_partition (ListNode head, int x) { ListNode smallHead = new ListNode(0); ListNode smallCur = smallHead; ListNode bigHead = new ListNode(0); ListNode bigCur = bigHead; while (head != null) { ListNode tmp = head.next; head.next = null; //断开链接 if (head.val < x) { smallCur.next = head; smallCur = smallCur.next; } else { bigCur.next = head; bigCur = bigCur.next; } head = tmp; } smallCur.next = bigHead.next; return smallHead.next; } }
算法题刷刷刷 文章被收录于专栏
数组、链表、栈、队列、堆、树、图等。 查找和排序:二分查找、线性查找、快速排序、归并排序、堆排序等。 动态规划:背包问题、最长公共子序列、最短路径 贪心算法:活动选择、霍夫曼编码 图:深度优先搜索、广度优先搜索、拓扑排序、最短路径算法(如 Dijkstra、Floyd-Warshall) 字符串操作:KMP 算法、正则表达式匹配 回溯算法:八皇后问题、0-1 背包问题 分治算法:归并排序、快速排序