0
点赞
收藏
分享

微信扫一扫

Leetcode86_分隔链表

瑾谋 2024-04-18 阅读 8

1.leetcode原题链接:. - 力扣(LeetCode)

2.题目描述

给你一个链表的头节点 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

3.实现方法

  思路:定义两个链表small和big,遍历链表,小于x值放到small链表中,大于等于x值放到big链表中,最后small的尾节点连接big的头节点

class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode small =new ListNode(-1);
        ListNode big=new ListNode(-1);
        ListNode sHead=small;
        ListNode bHead=big;

        while(head != null){
            if(head.val < x){
                small.next=head;
                small=small.next;
            }else{
                big.next=head;
                big=big.next;
            }
            head=head.next;
        }
        big.next=null;
        small.next=bHead.next;
        return sHead.next;
    }
}
举报

相关推荐

0 条评论