博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode Merge k Sorted Lists
阅读量:5754 次
发布时间:2019-06-18

本文共 2341 字,大约阅读时间需要 7 分钟。

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

对于这道题,之前并不知道java中有一个封装好的数据结构--优先队列。优先队列其实相当于一个最大或最小堆,能够根据所规定的的实现方法来对队列中的元素进行排序。

这样就好办了,把要排序的元素放在队列中,每次取出最小的那个,并把这个元素从原来的列表中删除 ,之后将原来的列表的新的最新的头元素节点重新放入队列中,如果为null,就跳过

1 package Merge.k.Sorted.Lists; 2  3 import java.util.ArrayList; 4 import java.util.Comparator; 5 import java.util.List; 6 import java.util.PriorityQueue; 7 import java.util.function.Function; 8 import java.util.function.ToDoubleFunction; 9 import java.util.function.ToIntFunction;10 import java.util.function.ToLongFunction;11 12 public class MergekSortedLists1 {13     public ListNode mergeKLists(List
lists) {14 if(lists==null||lists.size()==0) return null;15 int size=lists.size();16 PriorityQueue
queue=new PriorityQueue
(size,new Comparator
(){17 public int compare(ListNode o1, ListNode o2) {18 return o1.val-o2.val;19 } 20 });21 for(ListNode head:lists){22 if(head!=null)23 queue.offer(head);24 }25 ListNode head=null;26 ListNode index=null;27 while(!queue.isEmpty()){28 ListNode min=queue.poll();29 if(head==null){30 head=min;31 index=min;32 33 }else{34 index.next=min;35 index=index.next;36 }37 ListNode curr=min;38 curr=curr.next;39 if(curr!=null)40 queue.offer(curr);41 }42 return head; 43 }44 public static void main(String args[]){45 MergekSortedLists1 service=new MergekSortedLists1();46 List
lists=new ArrayList
();47 ListNode n1=new ListNode(1);48 ListNode n2=new ListNode(2);49 ListNode n3=new ListNode(2);50 n1.next=n2;51 n2.next=n3;52 ListNode x1=new ListNode(1);53 ListNode x2=new ListNode(1);54 ListNode x3=new ListNode(2);55 x1.next=x2;56 x2.next=x3;57 lists.add(n1);58 lists.add(x1);59 ListNode head=service.mergeKLists(lists);60 while(head!=null){61 System.out.println(head.val);62 head=head.next;63 }64 }65 66 }

 

转载于:https://www.cnblogs.com/criseRabbit/p/4231959.html

你可能感兴趣的文章
springboot系列十 Spring-Data-Redis
查看>>
Confluence 6 注册外部小工具
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
linux 死机分析
查看>>
BOM
查看>>
LeetCode:Nim Game - 尼姆博弈
查看>>
iOS: Block的循环引用
查看>>
mysql实战02 | 日志系统:一条SQL更新语句是如何执行的?
查看>>
测试九 赛后感受
查看>>
ECC椭圆曲线详解(有具体实例)
查看>>
关于WechatApp学习总结
查看>>
Linux常见命令(二)
查看>>
document.write()的用法和清空的原因
查看>>
【EXLUCAS模板】【拓展卢卡斯详解】【组合数高级篇】LuoGu P4720
查看>>
PyCharm切换解释器
查看>>
一些基本的灰度变换函数
查看>>
12.12日个人工作总结
查看>>
jmp far ptr s所对应的机器码
查看>>
css详解1
查看>>