package com.test.leecode.link; /** * Created by zhanghaipeng on 2019/8/5. * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } * * 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 * 示例: * 输入:1->2->4, 1->3->4 * 输出:1->1->2->3->4->4 * * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 */ class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } /** * @author zhanghaipeng */ public class CombineTwoLink { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode combine = new ListNode (-1); ListNode cur = combine; ListNode cur1 = l1; ListNode cur2 = l2; ListNode temp = null; while(cur1 != null || cur2 != null ) { if(cur1 == null){ cur.next = cur2; break; } if(cur2 == null){ cur.next = cur1; break; } if (cur1.val <= cur2.val) { temp = cur1.next; cur.next = cur1; cur1.next = null; cur1 = temp; cur = cur.next; } else { temp = cur2.next; cur.next = cur2; cur2.next = null; cur2 = temp; cur = cur.next; } } return combine.next; } public static void main(String[] args){ ListNode l1 = new ListNode (1); l1.next = new ListNode (2); l1.next.next = new ListNode(4); l1.next.next.next = new ListNode(5); ListNode l2 = new ListNode (1); l2.next = new ListNode (3); l2.next.next = new ListNode(4); new CombineTwoLink ().mergeTwoLists (l1,l2); } }
leecode 21. 合并两个有序链表
最新推荐文章于 2021-09-12 12:57:26 发布