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.

    No words!

     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         if (head == NULL) return head;
    13         ListNode *h = new ListNode(-1);
    14         h->next = head;
    15         ListNode *pre = h, *cur = h, *tmp;
    16         while (cur != NULL && cur->next != NULL) {
    17             if (cur->next->val < x && cur != pre) {
    18                 tmp = cur->next;
    19                 cur->next = tmp->next;
    20                 tmp->next = pre->next;
    21                 pre->next = tmp;
    22                 pre = pre->next;
    23             } else if (cur->next->val < x && cur == pre) {
    24                 pre = pre->next;
    25                 cur = cur->next;
    26             } else {
    27                 cur = cur->next;
    28             }
    29         }
    30         return h->next;
    31     }
    32 };
  • 相关阅读:
    form提交上传图片
    存储过程分页
    表格隔行换色效果
    C#获取本地局域网IP
    sql 拆分字符串并循环取值
    sql日期转换
    HDU 4858
    HDU 1199
    URAL 1306
    Codeforces Round #288 (Div. 2)
  • 原文地址:https://www.cnblogs.com/easonliu/p/3645712.html
Copyright © 2011-2022 走看看