leetcode第21题——*Merge Two Sorted Lists
2016-02-28 10:09
585 查看
题目
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the firsttwo lists.
思路
把两个有序链表归并成一个有序链表。先用比较笨但很简洁的办法:遍历两个有序链表的节点,比较节点值的大小,将较小值放入目标链表中,遍历完后如果两个链表有剩余节点,由于已经是有序的,插入目标链表的最后那个节点即可。代码
Python
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def mergeTwoLists(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ head = ListNode(0) cur = head while(l1 != None and l2 != None): #遍历l1和l2的节点并比较大小,将小的放入目标链表中,cur为游标 if(l1.val < l2.val): cur.next = l1 l1 = l1.next else: cur.next = l2 l2 = l2.next cur.next.next = None cur = cur.next #比较完l1和l2后还有剩余节点 if(l1 != None): cur.next = l1 else: cur.next = l2 return head.next
Java
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head= new ListNode(0); ListNode cur = head; //遍历l1和l2的节点并比较大小,cur代表当前节点 while(l1 != null && l2 != null) { if(l1.val < l2.val) { cur.next = l1; l1 = l1.next; } else { cur.next = l2; l2 = l2.next; } cur.next.next = null;//可减少链表大小,提高效率 cur = cur.next; } //比较完l1和l2的节点后还有剩余节点 if(l1 != null) cur.next = l1; else cur.next = l2; return head.next; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 介绍一款信息管理系统的开源框架---jeecg
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- install and upgrade scrapy
- Scrapy的架构介绍