21 Merge Two Sorted Lists
2015-08-26 21:24
253 查看
题目链接:https://leetcode.com/problems/merge-two-sorted-lists/
题目:
解题思路:
类似的题目做过不少了。
当两个链表都不为空时,比较它们的节点值,值较小的节点链接到新链表中,同时将该节点原先所在链表的头指针向后移动。当两个链表比较的节点值相等时,要同时把两个节点都链接到新链表中。
当两个链表有一个为空时,跳出上面的循环。此时判断哪个链表不为空,就把哪个链表中剩余的节点都链接到新链表的结尾。
注意:
将节点链接到新链表中后,要先移动该节点原先所在链表的头指针,再移动新链表的指针(该指针始终指向新链表最后一个节点)。否则,当遇到两个节点值相等的情况时,会出现死循环。
题目:
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.
解题思路:
类似的题目做过不少了。
当两个链表都不为空时,比较它们的节点值,值较小的节点链接到新链表中,同时将该节点原先所在链表的头指针向后移动。当两个链表比较的节点值相等时,要同时把两个节点都链接到新链表中。
当两个链表有一个为空时,跳出上面的循环。此时判断哪个链表不为空,就把哪个链表中剩余的节点都链接到新链表的结尾。
注意:
将节点链接到新链表中后,要先移动该节点原先所在链表的头指针,再移动新链表的指针(该指针始终指向新链表最后一个节点)。否则,当遇到两个节点值相等的情况时,会出现死循环。
/** * 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) { if(l1 == null && l2 == null) return null; ListNode head = new ListNode(0); ListNode p = head; while(l1 != null && l2 != null) { if(l1.val < l2.val) { p.next = l1; l1 = l1.next; p = p.next; } else if(l1.val > l2.val) { p.next = l2; l2 = l2.next; p = p.next; } else { p.next = l1; l1 = l1.next; p = p.next; p.next = l2; l2 = l2.next; p = p.next; } } while(l1 != null) { p.next = l1; l1 = l1.next; p = p.next; } while(l2 != null) { p.next = l2; l2 = l2.next; p = p.next; } return head.next; } }
208 / 208 test cases passed. Status: Accepted Runtime: 324 ms
相关文章推荐
- cf Div#317 Lengthening Sticks
- C++中虚继承派生类构造函数的正确写法
- xcode快捷键
- 跨域资源共享(CORS)安全性浅析[内有提及OPTIONS请求发起的条件]
- Reduce侧联接
- 折叠Collapse插件
- linux 根据sp和fp查调用栈
- html 利用 frameset 进行简单的框架布局
- PHP的curl带验证码模拟登陆学校的教务系统(验证码已被自动识别,不需要输入)
- 02类型转化 进程空间 数组2015/08/26
- 设计模式之策略模式
- 最新制作 Mac 电脑 U 盘启动盘笔记
- javascirpt对象创建
- HDU3342 - Legal or Not 拓补排序模板
- (转)Qt中如何使用样式表QPalette以及相关注意事项
- js获取?后面具体参数的值
- Object -C NSSet -- 笔记
- 创建园子第一天
- EasyUI DataGrid 的常用设置
- 01文件循环位移加密 C预处理宏2015/08/24