LeetCode-Partition List

来源:互联网 发布:mysql 导入数据乱码 编辑:程序博客网 时间:2024/06/08 16:44

题目:https://oj.leetcode.com/problems/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.

源码:Java版本

算法分析:时间复杂度O(n),空间复杂度O(1)。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode partition(ListNode head, int x) {        if(head==null) {            return null;        }                ListNode leftHead=null,rightHead=null,leftCur=null,rightCur=null;        for(ListNode node=head;node!=null;node=node.next) {            if(node.val<x) {                if(leftHead==null) {                    leftHead=leftCur=node;                }else {                    leftCur.next=node;                    leftCur=node;                }            }else {                 if(rightHead==null) {                    rightHead=rightCur=node;                }else {                    rightCur.next=node;                    rightCur=node;                }            }        }        if(leftCur!=null) {            leftCur.next=rightHead;        }        if(rightCur!=null) {            rightCur.next=null;        }        return leftHead!=null?leftHead:rightHead;    }}


0 0