题解 | #合并k个已排序的链表#

合并k个已排序的链表

http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

见代码

import java.util.*;
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode mergeKLists(ArrayList<ListNode> lists) {
        if(lists == null || lists.size() == 0) return null;
        int len = lists.size();
        if(len == 1) return lists.get(0);
        ArrayList<ListNode> ans = new ArrayList();
        
        for(int i = 0;i < len;i += 2){
            if(i == len - 1){
                ans.add(lists.get(i));
                break;
            }
            ans.add(merge2(lists.get(i),lists.get(i + 1)));
        }
        
        return mergeKLists(ans);
    }
    
    ListNode merge2(ListNode list1, ListNode list2){
        ListNode ans = new ListNode(0);
        ListNode ptr = ans;
        
        while(list1 != null || list2 != null){
            if(list1 == null){
                ptr.next = list2;
                return ans.next;
            }
            if(list2 == null){
                ptr.next = list1;
                return ans.next;
            }
            
            if(list1.val < list2.val){
                ptr.next = list1;
                list1 = list1.next;
            }else{
                ptr.next = list2;
                list2 = list2.next;
            }
            ptr = ptr.next;
        }
        return ans.next;
    }
}
全部评论

相关推荐

12-15 11:27
门头沟学院 Java
点赞 评论 收藏
分享
专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
链接
海梨花:我说话难听,你这简历跟没写没啥区别,搜搜别人的简历,用心写,不要随随便便就结束了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务