ARTS-15--鏈表裏面按指定數目進行拆分

概述:
左耳朵耗子專欄《左耳聽風》 用戶自發每週完成一個ARTS:

1.Algorithm:每週至少做一個 leetcode 的算法題

2.Review:閱讀並點評至少一篇英文技術文章

3.Tip:學習至少一個技術技巧

4.Share:分享一篇有觀點和思考的技術文章

Algorithm
題目概述:

給出一個鏈表和一個值x,以x爲參照將鏈表劃分成兩部分,使所有小於x的節點都位於大於或等於x的節點之前。
兩個部分之內的節點之間要保持的原始相對順序。
例如:
給出1->4->3->2->5->2和x = 3,
返回1->2->2->4->3->5

代碼思路



public class LinkedListSortDemo {

    static class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    public ListNode partition(ListNode head, int x) {
        if(head==null)
            return null;
        ListNode dummy1=new ListNode(0);
        ListNode dummy2=new ListNode(0);
        ListNode curr1=dummy1;
        ListNode curr2=dummy2;
        while(head!=null){
            if(head.val<x){
                curr1.next=head;
                curr1=curr1.next;
            }else{
                curr2.next=head;
                curr2=curr2.next;
            }
            head=head.next;
        }
        curr2.next=null;
        curr1.next=dummy2.next;
        return dummy1.next;
    }

    public static void main(String[] args) {
        LinkedListSortDemo l = new LinkedListSortDemo();
        ListNode listNode=new ListNode(1);
        ListNode temp=listNode;
        temp.next=new ListNode(4);
        temp=temp.next;

        temp.next=new ListNode(3);
        temp=temp.next;

        temp.next=new ListNode(2);
        temp=temp.next;

        temp.next=new ListNode(5);
        temp=temp.next;

        temp.next=new ListNode(2);
        temp=temp.next;

        ListNode result = l.partition(listNode,3);
        System.out.println("---");

    }

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章