zoukankan      html  css  js  c++  java
  • [LeetCode] 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)
                 return head;
             ListNode *p = head;
             ListNode *lessHead = NULL,*greaterHead =NULL,*pLess=NULL,*pGreater=NULL;
             while(p){
                 if(p->val < x ){
                     if(lessHead == NULL){
                       lessHead = p;
                       pLess = p;
                     }else{
                        pLess->next = p;
                        pLess = pLess->next;
                     }
                 }else{
                     if(greaterHead == NULL){
                        greaterHead = p ;
                        pGreater  = p;
                     }else{
                        pGreater->next = p;
                        pGreater = pGreater->next;
                     }
                 }
                 p = p->next;
             }//end while
             if(pGreater!=NULL)
                 pGreater->next = NULL;
             if(pLess !=NULL){
                  pLess->next = greaterHead;
                  return lessHead;
             }else{
                  return greaterHead;
             }
               
        }//end func
        
    };
  • 相关阅读:
    Hibernate入门
    安卓第四周作业
    第十三周作业
    第十三周上机作业
    第十二周作业
    第十二周上机作业
    第十一周作业
    第十一周上机作业
    第十周上机作业
    第九周上机作业
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3911205.html
Copyright © 2011-2022 走看看