zoukankan      html  css  js  c++  java
  • 0086. Partition List (M)

    Partition List (M)

    题目

    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.

    Example:

    Input: head = 1->4->3->2->5->2, x = 3
    Output: 1->2->2->4->3->5
    

    题意

    给定一个链表和目标值x,将链表中所有值小于x的结点移到所有值大于等于x的结点的前面,同时不能改变值小于/大于等于x的结点的相对位置。

    思路

    新建两个头结点分别用来保存原链表中值小于x的结点和值大于等于x的结点,最后将两链表相连即为所求的新链表。


    代码实现

    Java

    class Solution {
        public ListNode partition(ListNode head, int x) {
            // 建空的头结点便于处理
            ListNode leftHead = new ListNode(0), leftTail = leftHead;
            ListNode rightHead = new ListNode(0), rightTail = rightHead;
    
            while (head != null) {
                if (head.val < x) {
                    leftTail.next = head;
                    leftTail = head;
                } else {
                    rightTail.next = head;
                    rightTail = head;
                }
                head = head.next;
            }
    
            rightTail.next = null;				// 注意断链,否则可能会形成环
            leftTail.next = rightHead.next;		// 拼接链表
    
            return leftHead.next;
        }
    }
    

    JavaScript

    /**
     * @param {ListNode} head
     * @param {number} x
     * @return {ListNode}
     */
    var partition = function (head, x) {
      const dummyA = new ListNode()
      const dummyB = new ListNode()
      let A = dummyA
      let B = dummyB
    
      while (head) {
        const next = head.next
        head.next = null
        if (head.val < x) {
          A.next = head
          A = A.next
        } else {
          B.next = head
          B = B.next
        }
        head = next
      }
    
      A.next = dummyB.next
      return dummyA.next
    }
    
  • 相关阅读:
    Java vs Python
    Compiled Language vs Scripting Language
    445. Add Two Numbers II
    213. House Robber II
    198. House Robber
    276. Paint Fence
    77. Combinations
    54. Spiral Matrix
    82. Remove Duplicates from Sorted List II
    80. Remove Duplicates from Sorted Array II
  • 原文地址:https://www.cnblogs.com/mapoos/p/14658126.html
Copyright © 2011-2022 走看看