本文共 1952 字,大约阅读时间需要 6 分钟。
public class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(0); ListNode p = dummy; while(l1 != null || l2 != null){ int x = (l1 != null ? l1.val : Integer.MAX_VALUE); int y = (l2 != null ? l2.val : Integer.MAX_VALUE); if (x > y){ p.next = l2; l2 = l2.next; }else{ p.next = l1; l1 = l1.next; } p = p.next; } return dummy.next; }}
结束条件:有一个list为空,把另外一个list整体加在cur后面
/** * 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; }else if (l2 == NULL){ return l1; } ListNode* head = NULL; ListNode* cur1 = l1; ListNode* cur2 = l2; if ( cur1->val > cur2->val ){ head = cur2; cur2 = cur2->next; }else{ head = cur1; cur1 = cur1->next; } ListNode* cur = head; while(cur1 != NULL && cur2 != NULL){ if (cur1->val > cur2->val){ cur->next = cur2; cur2 = cur2->next; }else{ cur->next = cur1; cur1 = cur1->next; } cur = cur->next; } if (cur1 != NULL){ cur->next = cur1; }else if (cur2 != NULL){ cur->next = cur2; } return head; }};
转载地址:http://mjpbb.baihongyu.com/