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

    [思维问题]:

    不知道怎么找链表最后一个元素,以为要循环。

    其实可以利用“指针节点”的思想,一直添加,最后自然就是最后一个了。

    [一句话思路]:

    高个节点链表和矮子节点链表拼起来即可。

    [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

    [画图]:

     

    [一刷]:

    1. 要写corner case,还是要返回head
    2. 直接连接到右边head,因为右边的dummy不需要。
    3. 注意最后返回的是leftDummy.next

    [总结]:

    不需要像数组一样用logn空间的partition,直接左右添加就行

    [复杂度]:Time complexity: O(n) Space complexity: O(1不需要额外空间,就都是1

    [英文数据结构,为什么不用别的数据结构]:

    [其他解法]:

    [Follow Up]:

    [题目变变变]:

    2/3/4 colors

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode partition(ListNode head, int x) {
            if (head == null) {
                return head;
            }
            ListNode leftDummy = new ListNode(0);
            ListNode rightDummy = new ListNode(0);
            ListNode left = leftDummy;
            ListNode right = rightDummy;
            //two linked list
            while(head != null) {
                if (head.val < x) {
                    left.next = head;
                    left = left.next;
                }
                else {
                    right.next = head;
                    right = right.next;
                }
                head = head.next;
            }
            //join up
            right.next = null;
            left.next = rightDummy.next;
            
            return leftDummy.next;
        }
    }
    View Code
  • 相关阅读:
    Shell中判断语句if中-z至-d的意思
    每日英语-20171129
    THINK PHP 学习笔记20171115
    每日英语-20171115
    git bash安装和基本设置
    Centos6.8搭建Git服务(git版本可选)
    一键安装lamp环境出现的问题
    用PHP实现反向代理服务器
    动词的过去式、过去分词、现在分词
    树莓派 中文
  • 原文地址:https://www.cnblogs.com/immiao0319/p/8111570.html
Copyright © 2011-2022 走看看