题解 |简单易懂! #合并k个已排序的链表#(Java)

合并k个已排序的链表

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

这题主要是时间要少,然后节点的数据不大,我们可以用数组记录下每个节点val值-1000--1000出现的次数
数组下标是结点的值,数组的值是这个结点的值出现的次数。然后依次用节点链接起来就行了。
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) {
        ArrayList<ListNode> list = new ArrayList<>();
        int []valarry = new int[2002];
        for(int i =0;i<lists.size();i++){            
            ListNode hands = lists.get(i);
            while(true){
                if(hands == null)
                    break;
                if(hands.val<0){
                   valarry[0-hands.val]++; 
                }
                if(hands.val==0){
                   valarry[1001]++; 
                }
                if(hands.val>0){
                    valarry[hands.val+1001]++;
                }                
                hands = hands.next;                
            }
        }
        ListNode node = new ListNode(1001);
        ListNode hand = node;     
        for(int i =1000;i>=1;i--){
            if(valarry[i]!=0){
                for(int j=0;j<valarry[i];j++){                  
                    ListNode next = new ListNode(0-i); 
                    node.next = next;
                    node = node.next;                                       
                }
            }
        }
        for(int i =1001;i<valarry.length;i++){
            if(valarry[i]!=0){
                for(int j=0;j<valarry[i];j++){
                    ListNode next = new ListNode(i-1001); 
                    node.next = next;
                    node = node.next;                                       
                }
            }
        }
         return hand.next;
    }
     
}


空间还有很大的优化,时间也还能再优化,这题比较水,就懒得再做了,哈哈哈。反正ac了-0-

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:31
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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