leetcode21题 题解 翻译 C语言版 Python版
2016-04-14 19:49
681 查看
21. 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.
21.合并两个有序链表
合并两个有序链表并将其作为一个新链表返回。新链表应当由原来的两个链表的结点拼接而成。
思路:两个链表上分别设立游标来遍历,同时设立一个表示合并后链表的游标,不停地判断当前两链表的结点值,取小的结点将其拼接在合并后的链表上。由于链表都没有头结点,所以最开始要单独判断一下来获取最后合并链表的头结点。
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.
21.合并两个有序链表
合并两个有序链表并将其作为一个新链表返回。新链表应当由原来的两个链表的结点拼接而成。
思路:两个链表上分别设立游标来遍历,同时设立一个表示合并后链表的游标,不停地判断当前两链表的结点值,取小的结点将其拼接在合并后的链表上。由于链表都没有头结点,所以最开始要单独判断一下来获取最后合并链表的头结点。
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { if (!l1 && !l2) return NULL; if (!l1) return l2; if (!l2) return l1; struct ListNode *head, *p; if (l1->val < l2->val){ head = p = l1; l1 = l1->next; } else { head = p = l2; l2 = l2->next; } while (l1 && l2){ if (l1->val < l2->val){ p->next = l1; l1 = l1->next; } else { p->next = l2; l2 = l2->next; } p = p->next; } if (!l1){ p->next = l2; } if (!l2){ p->next = l1; } return head; }
# 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 """ if not (l1 or l2): return None if not l1: return l2 if not l2: return l1 head, p = None, None if (l1.val < l2.val): head, p = l1, l1 l1 = l1.next else: head, p = l2, l2 l2 = l2.next while l1 and l2: if l1.val < l2.val: p.next = l1 l1 = l1.next else: p.next = l2 l2 = l2.next p = p.next if not l1: p.next = l2 if not l2: p.next = l1 return head
相关文章推荐
- c++ json封装---解析
- c++第二次作业
- ActiveX(MFC)控件——添加接口及WEB调用
- C++ string类的实现
- int、long、long long取值范围
- C++创建文件夹
- VC 字符串转化和分割
- C++打印日志功能设计
- C++基本语法-----template
- 逆置/反转单链表(C语言)
- 单链表实现约瑟夫环(JosephCircle)(C语言)
- 在无头单链表的一个非头节点前插入一个节点(C语言)
- c语言前n项求和如何实现?2个方法可行的
- 上周末没事写了一个UDP的例子 大家感兴趣的可以参考一下
- VC 自己封装简单的播放音频MCI类库
- iOS陆哥开发笔记(二十四) (C语言之内存四区和函数调用模型)
- C++11 标准新特性: 右值引用与转移语义
- 深搜-n皇后问题 1019
- 浅谈C++中的几种构造函数
- c++中的异常处理定义和使用方法