支持区_盛大上市

该标题在leetcode难度界说为困难,但算是比较简略的,根本求解的思路也是比较直接简略的。

根本求解

1、循环链表数组,从各个节点中获取最小值

2、成果链表中添加新发生的最小值节点

3、循环链表中最小值节点方位的链表节点指向下个节点方位

4、重复上述进程

/**\n*Definitionforsingly-linkedlist.\n*publicclassListNode{\n*??intval;\n*??ListNodenext;\n*??ListNode(){}\n*??ListNode(intval){this.val=val;}\n*??ListNode(intval,ListNodenext){this.val=val;this.next=next;}\n*}\n*/\nclassSolution{\n??publicListNodemergeKLists(ListNode[]lists){\n????ListNodehead;\n????List<Object>minResult=findMin(lists);\n????head=(ListNode)minResult.get(0);\n????\n????while(minResult.get(0)!=null){\n??????intindex=(int)minResult.get(1);\n??????ListNodenode=(ListNode)minResult.get(0);\n??????lists[index]=node.next;\n??????minResult=findMin(lists);\n??????//将成果链表串起来\n??????node.next=(ListNode)minResult.get(0);\n???}\n????returnhead;\n?}\n??\n??privateList<Object>findMin(ListNode[]lists){\n????//依标题约束的最大值\n????intmin=?10001;\n????ListNodenode=null;\n//获取最小值和最小值的索引方位\n????intindex=0;\n????for(inti=0;i<lists.length;i++){\n??????if(lists[i]==null){\n????????continue;\n?????}\n??????if(lists[i].val<min){\n????????min=lists[i].val;\n????????node=lists[i];\n????????index=i;\n?????}\n???}\n????returnArrays.asList(node,index);\n?}\n}

扩展思路

1、运用优先行列处理排序

classSolution{\n??publicListNodemergeKLists(ListNode[]lists){\n????if(lists==null||lists.length==0)returnnull;\n????//界说优先行列\n????PriorityQueue<ListNode>queue=newPriorityQueue<ListNode>(lists.length,(a,b)->a.val-b.val);\n????//界说“东西”节点,无实际意义,仅便利“指针”处理\n????ListNodedummy=newListNode(0);\n????ListNodetail=dummy;\n????//将现有头节点入行列\n????for(ListNodenode:lists)\n??????if(node!=null)\n????????queue.add(node);\n????//循环处理,并不断取最小值\n????while(!queue.isEmpty()){\n??????tail.next=queue.poll();\n??????tail=tail.next;\n??????\n??????if(tail.next!=null)\n????????queue.add(tail.next);\n???}\n????returndummy.next;\n?}\n}

2、完结两个链表的兼并操作(leetcode-21题)

publicListNodemergeTwo(ListNodea,ListNodeb){\n//mergetwos.\n}\n\npublicListNodemergeKLists(ListNode[]nodes){\n??ListNoderesult=null;\n??//循环处理,也能够运用归并算法的思维进行处理\n??for(inti=0;i<nodes.length;i++){\n????result=mergeTwo(result,nodes[i]);\n?}\n??returnresult;\n}

发布于 2024-01-20 11:01:04
收藏
分享
海报
1
目录