LeetCode 21 — Merge Two Sorted Lists(C++ Java Python)
2014-02-27 22:06
701 查看
题目:http://oj.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.
题目翻译:
合并两个有序链表,并返回该新链表。新链表应该由前两个链表中的节点拼接生成。
分析:
使用归并的思想,每次选择值较小的节点接到新链表的后面。
C++实现:
Java实现:
Python实现:
感谢阅读,欢迎评论!
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++实现:
/** * 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) { if(l1 == NULL) { return l2; } if(l2 == NULL) { return l1; } ListNode *node = NULL; if(l1->val <= l2->val) { node = l1; l1 = l1->next; } else { node = l2; l2 = l2->next; } ListNode *head = node; while(l1 != NULL && l2 != NULL) { if(l1->val <= l2->val) { node->next = l1; node = node->next; l1 = l1->next; } else { node->next = l2; node = node->next; l2 = l2->next; } } if(l1 != NULL) { node->next = l1; } else if(l2 != NULL) { node->next = l2; } return head; } };
Java实现:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) { return l2; } if (l2 == null) { return l1; } ListNode node = null; ListNode head = null; while (l1 != null && l2 != null) { if (l1.val <= l2.val) { if (node == null) { node = l1; head = node; } else { node.next = l1; node = node.next; } l1 = l1.next; } else { if (node == null) { node = l2; head = node; } else { node.next = l2; node = node.next; } l2 = l2.next; } } if (l1 != null) { node.next = l1; } else if (l2 != null) { node.next = l2; } return head; } }
Python实现:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param two ListNodes # @return a ListNode def mergeTwoLists(self, l1, l2): if l1 == None: return l2 if l2 == None: return l1 node = None while l1 != None and l2 != None: if l1.val <= l2.val: if node == None: node = l1 head = node else: node.next = l1 node = node.next l1 = l1.next else: if node == None: node = l2 head = l2 else: node.next = l2 node = node.next l2 = l2.next if l1 != None: node.next = l1 elif l2 != None: node.next = l2 return head
感谢阅读,欢迎评论!
相关文章推荐
- LeetCode 21 Merge Two Sorted Lists (C,C++,Java,Python)
- leetcode_[python/C++]_21. Merge Two Sorted Lists(合并有序链表)
- [LeetCode] 021. Merge Two Sorted Lists (Easy) (C++/Python)
- LeetCode 21. Merge Two Sorted Lists(C++版)
- 【C++】【LeetCode】21. Merge Two Sorted Lists
- leetcode 21 Merge Two Sorted Lists C++
- [C++]LeetCode 21: Merge Two Sorted Lists(合并链表)
- 【leetcode c++】21 Merge Two Sorted Lists
- Java [leetcode 21]Merge Two Sorted Lists
- 【LeetCode-21】 Merge Two Sorted Lists(C++)
- 【LeetCode】Merge Two Sorted Lists 解题报告(Java & Python)
- [LeetCode]21. Merge Two Sorted Lists(C++)
- 【LeetCode 21】Merge Two Sorted Lists(Python)
- [LeetCode By Python] 21. Merge Two Sorted Lists
- Leetcode 21. Merge Two Sorted Lists(C++)
- (Java)LeetCode-21. Merge Two Sorted Lists
- [leetcode:python]21.Merge Two Sorted Lists
- [leetcode]21. Merge Two Sorted Lists(java)
- Leetcode 21 Merge Two Sorted Lists
- leetcode: (21) Merge Two Sorted Lists