zoukankan      html  css  js  c++  java
  • 合并K个排序链表

    public class Solution {
    public ListNode mergeKLists(List<ListNode> lists) {
    if (lists.size() == 0) {
    return null;
    }
    return mergeHelper(lists, 0, lists.size() - 1);
    }
    private ListNode mergeHelper(List<ListNode> lists, int start, int end) {
    if (start == end) {
    return lists.get(start);
    }
    int mid = (end +start) / 2;
    ListNode left = mergeHelper(lists, start, mid);//不断划分
    ListNode right = mergeHelper(lists, mid + 1, end);
    return mergeTwoLists(left, right);
    }
    private ListNode mergeTwoLists(ListNode list1, ListNode list2) {
    ListNode dummy = new ListNode(0);
    ListNode tail = dummy;
    while (list1 != null && list2 != null) {
    if (list1.val < list2.val) {
    tail.next = list1;
    list1 = list1.next;
    } else {
    tail.next = list2;
    list2 = list2.next;
    }
    tail = tail.next;
    }
    if (list1 != null) {
    tail.next = list1;
    } else {
    tail.next = list2;
    }

    return dummy.next;
    }
    }

  • 相关阅读:
    CVS,GIT,Mercurial和SVN比较
    ubuntu-使用终端配置网络
    编写简单的hashCode方法
    编写高质量equals方法
    文件上传和下载
    Java常用命令
    增删查改-MySQL
    Newton迭代法-C++
    二分法-C++
    适配器模式
  • 原文地址:https://www.cnblogs.com/mac10/p/7445403.html
Copyright © 2011-2022 走看看