• [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.

    类似于qsort的partition的思想,用两根指针记录左右两边。

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *partition(ListNode *head, int x) {
    12         // Start typing your C/C++ solution below
    13         // DO NOT write int main() function
    14         if (head == NULL)
    15             return NULL;
    16             
    17         ListNode *pPre = NULL;
    18         ListNode *p = head;
    19         ListNode *q = head;
    20         
    21         while(q->next)
    22             q = q->next;
    23             
    24         ListNode *tail = q;
    25         
    26         while(p != q)
    27         {
    28             if (p->val >= x)
    29             {
    30                 ListNode *pNext = p->next;
    31                 if (head == p)
    32                     head = pNext;
    33                 tail->next = p;
    34                 p->next = NULL;
    35                 tail = p;
    36                 if (pPre)
    37                     pPre->next = pNext;
    38                 p = pNext;
    39             }
    40             else
    41             {
    42                 pPre = p;
    43                 p = p->next;
    44             }
    45         }
    46         
    47         if (p->val >= x && q != tail)
    48         {
    49             ListNode *pNext = p->next;
    50             if (head == p)
    51                 head = pNext;
    52             tail->next = p;
    53             p->next = NULL;
    54             if (pPre)
    55                 pPre->next = pNext;
    56         }
    57         
    58         return head;       
    59     }
    60 };
  • 相关阅读:
    arm基础知识1
    安装Yellowfin报错——No such file or directory: '/tmp/pip-build-jykvuD/YellowFin/README.md'
    下载kaggle数据集,验证手机号
    调参必备---GridSearch网格搜索
    sklearn.metrics.roc_curve
    & | and or
    16个推荐系统开放公共数据集整理分享
    tensorflow ConfigProto
    python __future__ 使用
    tf idf公式及sklearn中TfidfVectorizer
  • 原文地址:https://www.cnblogs.com/chkkch/p/2777268.html
Copyright © 2020-2023  润新知