21. 合并两个有序链表
地址: https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
把所有的ListNode放到Map里面,然后排序。重新制定链接。
重点是如何排序,需要考虑 相同的数字。
Python代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
dic={}
current=l1
if l1 ==None and l2==None:
return None
num=1000
while current != None:
if current.val>0:
dic[current.val*100000+10000+num]=current
else:
dic[current.val*100000-10000-num]=current
current=current.next
num=num+1
current=l2
num=1000
while current != None:
if current.val>0:
dic[current.val*100000+20000+num]=current
else:
dic[current.val*100000-20000-num]=current
current=current.next
num=num+1
print(dic)
dict2=sorted(dic)
print(dict2)
keys=list(dict2)
keys.reverse()
for i in range(1,len(keys)):
dic[(keys[i])].next= dic[(keys[i-1])]
return dic[(keys[-1])]
Scala代码:
/**
* Definition for singly-linked list.
* class ListNode(var _x: Int = 0) {
* var next: ListNode = null
* var x: Int = _x
* }
*/
object Solution {
def mergeTwoLists(l1: ListNode, l2: ListNode): ListNode = {
var dic:Map[Int,ListNode]=Map()
var current=l1
if ((l1 ==null) && (l2==null)){
return null
}
var num=1000
while(current != null){
if (current.x>=0){
dic += ((current.x*100000+10000+num) -> current)
}else{
dic += ((current.x*100000-10000-num) -> current)
}
current=current.next
num=num+1
}
current=l2
num=1000
while(current != null){
if (current.x>=0){
dic += ((current.x*100000+20000+num) -> current)
}else{
dic += ((current.x*100000-20000-num) -> current)
}
current=current.next
num=num+1
}
var keys=dic.keys.toList.sorted.reverse
var i=0
for ( i <- 1 to keys.length-1){
dic(keys(i)).next= dic(keys(i-1))
}
return dic(keys(keys.length-1))
}
}
博客围绕合并两个有序链表展开,给出题目地址https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/ ,介绍解题思路是将所有ListNode放入Map排序后重新制定链接,强调排序时要考虑相同数字,还给出了Python和Scala代码。

731

被折叠的 条评论
为什么被折叠?



