leetcode-21-Merge Two Sorted Lists
2016-05-10 17:30
337 查看
题目: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 first two lists。
将两个有序链表按序合并。
主要是链表的操作,与链表有关的题就拿c++做了。
思路:依次比较两个链表的当前元素的val值,p指向小的那个,同时小的那个指针后移。注意链表为空的情况,指针后移出现一个为空时跳出循环,在下面的if判断是哪个还不为空则将p指向它那一串即可。
c++:
10ms AC。
贴个python的:
大同小异。
将两个有序链表按序合并。
主要是链表的操作,与链表有关的题就拿c++做了。
思路:依次比较两个链表的当前元素的val值,p指向小的那个,同时小的那个指针后移。注意链表为空的情况,指针后移出现一个为空时跳出循环,在下面的if判断是哪个还不为空则将p指向它那一串即可。
c++:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* p=new ListNode(0); ListNode* q=p; //q保存链表头部 while (l1 && l2) { if (l1->val >= l2->val) { p->next=l2; l2=l2->next; } else { p->next=l1; l1=l1->next; } p=p->next; //注意p指针也要后移 } if(l1) p->next=l1; if(l2) p->next=l2; return q->next; //从第二个node开始取,舍弃开始的0 } };
10ms AC。
贴个python的:
class Solution(object): ''' 题意:合并两个有序链表 ''' def mergeTwoLists(self, l1, l2): dummy = ListNode(0) tmp = dummy while l1 != None and l2 != None: if l1.val < l2.val: tmp.next = l1 l1 = l1.next else: tmp.next = l2 l2 = l2.next tmp = tmp.next if l1 != None: tmp.next = l1 else: tmp.next = l2 return dummy.next
大同小异。
相关文章推荐
- 人数不定的工资类
- iOS的UIButton单选的最佳方式
- 如何利用C语言实现确定范围及不重复的随机数
- HBase 使用场景和成功案例
- Hadoop 2.3.0-cdh5.0.0 HA集群搭建(yum 安装)
- win10 10586 关机便利贴报内存不能为 read 应用程序错误
- [Linux] Linux系统(用户管理)
- 在VS2010中一个MySql的数据库表的创建
- jrebel+eclipse+tomcat实现热部署(带破解)
- Qt样式表的使用
- 第11周阅读程序(4)
- Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用
- iostat 监视I/O子系统
- 第十周第十一周项目3警察与厨师的派生类
- XML解析-第三方和系统方法
- C++第五次实验
- android: 使用 AsyncTask
- wdcp LNMP,php 网页显示源代码
- Android特效开发(仿zaker用手向上推动的效果(推动门效果))
- Selenium2Library与HttpLibrary.HTTP