zoukankan      html  css  js  c++  java
  • [leetcode] 86. 分隔链表

    86. 分隔链表

    这个题是让你把比x小的节点都挪到大于等于x节点前面去,注意还要保证每个节点的初始位置。

    那么我们可以先找到第一个>=x的节点p,然后p后面的所有节点,都插入到p之前即可

    我的代码写复杂了= =

    class Solution {
        public ListNode partition(ListNode head, int x) {
            ListNode p = head;
            boolean flag = false;
            if (p != null && p.val >= x) flag = true;
            while (p != null && p.next != null) {
                if (flag && p.next.val < x) {
                    ListNode tmp = p.next;
                    p.next = p.next.next;
                    head = listNodeInsert(head, tmp, x);
                    continue;
                } else if (p.next.val >= x) {
                    flag = true;
                }
                p = p.next;
            }
            return head;
        }
    
        public ListNode listNodeInsert(ListNode head, ListNode node, int x) {
            ListNode p = head;
    
            if (p.val >= x) {
                node.next = p;
                return node;
            }
    
            while (true) {
                if (p.next == null) {
                    p.next = node;
                    node.next = null;
                    break;
                } else if (p.next.val >= x) {
                    node.next = p.next;
                    p.next = node;
                    break;
                } else {
                    p = p.next;
                }
            }
            return head;
        }
    }
    
  • 相关阅读:
    3.22
    练习 3.16
    简单工厂模式
    Java-不可变字符串
    java中的缓冲流
    TCP协议下java通信
    nginx优化
    nginx反向代理
    shell-for循环
    shell-数组
  • 原文地址:https://www.cnblogs.com/acbingo/p/9404586.html
Copyright © 2011-2022 走看看