zoukankan      html  css  js  c++  java
  • Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

    You should preserve the original relative order of the nodes in each of the two partitions.

    For example,
    Given 1->4->3->2->5->2 and x = 3,
    return 1->2->2->4->3->5.

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     
    */
    class Solution {
    public:
        ListNode *partition(ListNode *head, int x) 
        {
            if(head==NULL || head->next==NULL) return head;
            
            ListNode* pLarge;
            ListNode* pSmall;
            ListNode* pMid;
            
            if(head->val<x) pSmall=head;
            else
            {
                pLarge=head;
                pMid=head;
                while(pMid->next!=NULL && pMid->next->val>=x) pMid=pMid->next;
                if(pMid->next==NULL) return head;
                head=pMid->next;
                pMid->next=head->next;
                head->next=pLarge;
                pSmall=head;
            }
            
            while(true)
            {
                pMid=pSmall;
                
                while(pMid->next!=NULL && pMid->next->val>=x) pMid=pMid->next;
                if(pMid->next==NULL) break;
                
                pLarge=pMid->next;
                pMid->next=pLarge->next;
                pLarge->next=pSmall->next;
                pSmall->next=pLarge;
                
                while(pSmall->next!=NULL && pSmall->next->val<x) pSmall=pSmall->next;
                if(pSmall->next==NULL) break;
            }
            return head;
        }
    }; 
  • 相关阅读:
    python函数函数嵌套分析步骤与递归函数
    解决Navicat运行sql文件报错:1292
    SOAP与REST,有什么不同?
    bcrypt vs crypto vs cryptojs
    bcryptjs加密如何工作
    AOP(面向切面编程)
    javascript语言搞笑图
    js中函数声明先提升还是变量先提升
    CSS的单位及css3的calc()及line-height百分比
    Vue 项目性能优化 — 实践指南(网上最全 / 详细)
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759540.html
Copyright © 2011-2022 走看看