zoukankan      html  css  js  c++  java
  • 86. Partition List (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.

    class Solution {
    public:
        ListNode *partition(ListNode *head, int x) {
            if(!head || !(head->next) ) return head;
            ListNode *current = head;
            ListNode *smallPointer = NULL; //point to the last node <x
            ListNode *largePointer = NULL; //point to the last node >x
            while(current)
            {
                if(current->val >= x)
                {
                    largePointer = current;
                    current = current->next;
                }
                else
                {
                    if(!largePointer)
                    {
                        smallPointer = current;
                        current = current->next;
                    }
                    else if(smallPointer)
                    {
                        largePointer->next = smallPointer->next;
                        smallPointer -> next = current;
                        current = current->next;
                        smallPointer = smallPointer->next;
                        smallPointer->next = largePointer->next;
                        largePointer->next = current;
                    }
                    else //head
                    {
                        smallPointer = current;
                        current = current->next;
                        smallPointer->next = head;
                        head = smallPointer;
                        largePointer->next = current;
                    } 
                }
            }
            return head;
            
        }
    };
  • 相关阅读:
    构造器
    方法
    Arrays常用的类
    栈内存和堆内存
    方法的重载
    数组遍历
    Scanner类
    连接符和三元运算符
    逻辑运算和位运算
    CSAPP笔记(第二章 信息的表示和处理)-02
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4853113.html
Copyright © 2011-2022 走看看