原题网址:https://leetcode.cn/problems/partition-list/submissions/
给一个链表,和一个定值;要求小于这个定值的排在最前面剩下的在排在一起;
用两个链表;一个保存小于定值的节点,一个保存剩下的链表;
public ListNode partition(ListNode head, int x) {
// 用两个链表一个保存小于x值的一个保存剩下的
ListNode lessNode = new ListNode(-1);
ListNode less = lessNode;
ListNode moreNode = new ListNode(-1);
ListNode more = moreNode;
ListNode cur = head;
while(cur != null) {
if(cur.val < x) {
ListNode temp = cur;
less.next = cur;
less = less.next;
cur = cur.next;
temp.next = null;
} else {
ListNode temp = cur;
more.next = cur;
more = more.next;
cur = cur.next;
temp.next = null;
}
}
less.next = moreNode.next;
return lessNode.next;
}
该博客介绍了如何使用Java实现一个链表分区的算法。给定一个链表和一个整数x,将所有小于x的节点放在前面,其余节点放在后面。通过创建两个辅助链表分别存储这两个部分,然后连接它们来完成操作。这是一个涉及链表操作和条件判断的算法问题。
762

被折叠的 条评论
为什么被折叠?



