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

    算法思路:

    维护两个指针,一个指向带插入位置的前驱,一个顺序遍历list,遇到>=x的节点,next,遇到<x的就把它插入到上一个指针的后面。第一个节点<x时候,需要特殊处理

     1 public class Solution {
     2     public ListNode partition(ListNode head, int x) {
     3         if (head == null || head.next == null)    return head;
     4         ListNode hhead = new ListNode(0);
     5         hhead.next = head;
     6         ListNode pre = hhead;
     7         ListNode tail = hhead;
     8         while (tail.next != null) {
     9             if (tail.next.val < x) {//第一个节点特殊处理
    10                 if(tail == hhead){
    11                     pre = pre.next;
    12                     tail = tail.next;
    13                     continue;
    14                 }
    15                 ListNode tem = tail.next;
    16                 tail.next = tem.next;
    17                 tem.next = pre.next;
    18                 pre.next = tem;
    19                 pre = pre.next;
    20                 if(tail.val < x){
    21                     tail = tail.next;
    22                 }
    23             } else
    24                 tail = tail.next;
    25         }
    26         return hhead.next;
    27     }
    28 }

    感觉这道题做的很垃圾。。。。

  • 相关阅读:
    0 RabbitMQ概念
    java 排序
    spring整合redis(基于redisTemplate)
    http之content-type
    http协议讲解
    Java8 lambda 以及 Lambda在集合中的使用
    java中decimalFormat格式化数值
    找出占用的端口进程ID,并且杀死该进程
    CSS
    标签
  • 原文地址:https://www.cnblogs.com/huntfor/p/3856410.html
Copyright © 2020-2023  润新知