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

    该题将链表拆成两个,left里存小于x的结点,right里存大于等于x的结点,最后将left和right拼接起来

    public class Solution {
        public ListNode partition(ListNode head, int x) {
            if (head == null) {
                return null;
            }
            
            ListNode leftDummy = new ListNode(0);
            ListNode rightDummy = new ListNode(0);
            ListNode left = leftDummy, right = rightDummy;
            //将小于x的结点加入到left里,大于等于x的结点加入到right里
            while (head != null) {
                if (head.val < x) {
                    left.next = head;
                    left = head;
                } else {
                    right.next = head;
                    right = head;
                }
                head = head.next;
            }
            //记得给right.next赋值为null
            right.next = null;
            left.next = rightDummy.next;
            return leftDummy.next;
        }
    }
  • 相关阅读:
    NOIP2012 借教室
    bzoj1816 扑克牌
    TYVJ1359 收入计划
    NOIP2015 跳石头
    易错点
    散列表
    数学模板
    12. 17 哈理工网络赛
    哈理工 网络赛
    三角形
  • 原文地址:https://www.cnblogs.com/bubbleStar/p/6629420.html
Copyright © 2020-2023  润新知