LeetCode(64)分隔链表【链表】【中等】
2023-12-16 16:49:30
链接: 分隔链表
1.题目
给你一个链表的头节点 head
和一个特定值 x
,请你对链表进行分隔,使得所有 小于 x
的节点都出现在 大于或等于 x
的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
示例 1:
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
示例 2:
输入:head = [2,1], x = 2
输出:[1,2]
提示:
- 链表中节点的数目在范围
[0, 200]
内 -100 <= Node.val <= 100
-200 <= x <= 200
2.答案
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public static ListNode partition(ListNode head, int x) {
if (head == null) {
return null;
}
ListNode node = head;
ListNode beforeNode = null;
ListNode firstBiggerNode = null;
ListNode firstSmallerNode = null;
ListNode smallerNode = null;
while (node != null) {
if (node.val < x) {
if (firstSmallerNode == null) {
firstSmallerNode = node;
}
if (smallerNode != null) {
smallerNode.next = node;
}
if (beforeNode != null) {
beforeNode.next = node.next;
}
smallerNode = node;
} else {
if (firstBiggerNode == null) {
firstBiggerNode = node;
}
beforeNode = node;
}
node = node.next;
}
if (smallerNode != null) {
smallerNode.next = firstBiggerNode;
return firstSmallerNode;
} else {
return firstBiggerNode;
}
}
}
3.提交结果截图
整理完毕,完结撒花~ 🌻
文章来源:https://blog.csdn.net/qq_33204709/article/details/135034057
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!