溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java怎么實(shí)現(xiàn)兩兩合并

發(fā)布時(shí)間:2021-12-18 15:29:07 來源:億速云 閱讀:150 作者:iii 欄目:云計(jì)算

這篇文章主要介紹“Java怎么實(shí)現(xiàn)兩兩合并”,在日常操作中,相信很多人在Java怎么實(shí)現(xiàn)兩兩合并問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java怎么實(shí)現(xiàn)兩兩合并”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

package com.lifeibigdata.algorithms.leetcode;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lifei on 16/5/30.
 *
 * 1 轉(zhuǎn)化為兩兩合并
 */
public class MergeKLists {

    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode n1 = new ListNode(3);
        ListNode n2 = new ListNode(4);
        ListNode l2 = new ListNode(5);

        l1.next = n1;
        n1.next = n2;

        List<ListNode> lists = new ArrayList<>();
        lists.add(l1);
        lists.add(l2);

        MergeKLists mt = new MergeKLists();
        ListNode head = mt.mergeKLists(lists);
        System.out.println(head.val);
        System.out.println(head.next.val);
    }

    ListNode merge2Lists(ListNode list1, ListNode list2) {
        ListNode head    = new ListNode(-1);
        ListNode current = head;
        while(list1!=null&&list2!=null) {
            if(list1.val<list2.val) {
                current.next = list1;
                list1   = list1.next;
            } else {
                current.next = list2;
                list2   = list2.next;
            }
            current = current.next;
        }
        if(list1!=null) {
            current.next = list1;
        } else {
            current.next = list2;
        }
        return head.next;
    }
    public ListNode mergeKLists(List<ListNode> lists) {
        if(lists==null||lists.size()==0) {
            return null;
        }
        if(lists.size()==1) {
            return lists.get(0);
        }
        int length = lists.size() ;
        int mid = (length - 1)/2 ;
        ListNode l1 = mergeKLists(lists.subList(0,mid + 1)) ;
        ListNode l2 = mergeKLists(lists.subList(mid + 1,length)) ;

        return merge2Lists(l1,l2) ;
    }

}

到此,關(guān)于“Java怎么實(shí)現(xiàn)兩兩合并”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI