• LeetCode: Partition List 解题报告


    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.

    SOLUTION 1:

    注意使用Dummynode来记录各个链条的头节点的前一个节点。这样我们可以轻松找回头节点。

    1. Go Through the link, find the nodes which are bigger than N, create a new link.

    2. After 1 done, just link the two links.

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) {
     7  *         val = x;
     8  *         next = null;
     9  *     }
    10  * }
    11  */
    12 public class Solution {
    13     public ListNode partition(ListNode head, int x) {
    14         if (head == null) {
    15             return null;
    16         }
    17         
    18         ListNode dummy = new ListNode(0);
    19         dummy.next = head;
    20         
    21         ListNode pre = dummy;
    22         ListNode cur = head;
    23         
    24         // Record the big list.
    25         ListNode bigDummy = new ListNode(0);
    26         ListNode bigTail = bigDummy;
    27         
    28         while (cur != null) {
    29             if (cur.val >= x) {
    30                 // Unlink the cur;
    31                 pre.next = cur.next;
    32                
    33                 // Add the cur to the tail of the new link.
    34                 bigTail.next = cur;
    35                 cur.next = null;
    36                
    37                 // Refresh the bigTail.
    38                 bigTail = cur;
    39                
    40                 // 移除了一个元素的时候,pre不需要修改,因为cur已经移动到下一个位置了。
    41             } else {
    42                 pre = pre.next;
    43             }
    44             
    45             cur = pre.next;
    46         }
    47         
    48         // Link the Big linklist to the smaller one.
    49         pre.next = bigDummy.next;
    50         
    51         return dummy.next;
    52     }
    53 }
    View Code

    CODE:

    https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/list/Partition.java

  • 相关阅读:
    tomcat 自动部署代码
    weex Android
    视频大全
    sql语句
    来一个朴素的验证码小插件
    tcp通信客户端本地日志查看
    python练习题
    由count(sno)和count(cno)引发的思考
    centos7命令行和图形界面的相互切换(附centos7安装配置教程)
    Jenkins配置有用摘抄笔记
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4143652.html
Copyright © 2020-2023  润新知