【Lintcode】96. Partition List
发布日期:2021-05-03 18:44:36 浏览次数:19 分类:精选文章

本文共 1013 字,大约阅读时间需要 3 分钟。

题目地址:

给定一个链表,再给定一个数 x x x,要求按原链表的顺序,重排链表使得小于 x x x的节点放在大于等于 x x x的节点之前。

思路是先将整个链表按照与 x x x的大小关系分成两部分,然后再接起来即可。代码如下:

public class Solution {       /**     * @param head: The first node of linked list     * @param x: An integer     * @return: A ListNode     */    public ListNode partition(ListNode head, int x) {           // write your code here        ListNode l1 = new ListNode(0), l2 = new ListNode(0);        ListNode prev1 = l1, prev2 = l2;        while (head != null) {           	// 如果当前节点小于x则接在prev1后面,否则接在prev2后面            if (head.val < x) {                   prev1.next = head;                prev1 = prev1.next;            } else {                   prev2.next = head;                prev2 = prev2.next;            }            head = head.next;        }                prev1.next = prev2.next = null;        prev1.next = l2.next;        return l1.next;    }}class ListNode {       int val;    ListNode next;    ListNode(int x) {           val = x;    }}

时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)

上一篇:【Lintcode】31. Partition Array
下一篇:【Lintcode】112. Remove Duplicates from Sorted List

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月20日 03时31分18秒