Leecode之分割链表

简介: Leecode之分割链表

一.题目及剖析

https://leetcode.cn/problems/partition-list-lcci/description/

二.思路引入

就是将其分成大小两个链表,以x为分界线进行分堆,最后再将两链表合并

三.代码引入

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* partition(struct ListNode* head, int x){
    if(head == NULL)
    return head;
    struct ListNode *lessHead, *lessTail, *greaterHead, *greaterTail, *pcur;
    lessHead = lessTail = (struct ListNode*)malloc(sizeof(struct ListNode));
    greaterHead = greaterTail = (struct ListNode*)malloc(sizeof(struct ListNode));
    pcur = head;
    while(pcur)
    {
        if(pcur->val < x)
        {
            lessTail->next = pcur;
            lessTail = lessTail->next;
        }
        else
        {
            greaterTail->next = pcur;
            greaterTail = greaterTail->next;
        }
        pcur = pcur->next;
    }
    greaterTail->next = NULL;
    lessTail->next = greaterHead->next;
    return lessHead->next;
}
相关文章
|
6月前
面试题 02.04:分割链表
面试题 02.04:分割链表
53 0
|
1月前
【数据结构】环形、相交、回文、分割、合并、反转链表
【数据结构】环形、相交、回文、分割、合并、反转链表
28 0
|
4月前
【数据结构OJ题】链表分割
牛客题目——链表分割
32 0
【数据结构OJ题】链表分割
【每日一题】牛客网——链表分割
【每日一题】牛客网——链表分割
|
6月前
牛客—CM11 链表分割
牛客—CM11 链表分割
|
6月前
|
Java C++ Python
C/C++每日一练(20230422) 存在重复元素、组合总和、给表达式添加运算符
C/C++每日一练(20230422) 存在重复元素、组合总和、给表达式添加运算符
58 0
C/C++每日一练(20230422) 存在重复元素、组合总和、给表达式添加运算符
|
6月前
|
Python Java Go
Java每日一练(20230401) 合并K个升序链表、最长有效括号、分割回文串
Java每日一练(20230401) 合并K个升序链表、最长有效括号、分割回文串
44 0
Java每日一练(20230401) 合并K个升序链表、最长有效括号、分割回文串
|
6月前
Leecode之反转链表
Leecode之反转链表
|
6月前
Leecode之合并两个有序链表
Leecode之合并两个有序链表
|
6月前
Leecode之环形链表进阶
Leecode之环形链表进阶