• LeetCode21---合并两个有序链表


    将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

    示例:

    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    package list;

    /**
    * @AUTHOR:LKR
    * @DATE:2019/3/7
    * @DESCRIPTION:合并两个有序链表
    * 定义头结点
    * 当两个链表都不为空是,比较大小,指针指向小的节点,
    * 如果有一个链表为空,直接指向另一个不为空链表
    **/
    public class SortTwoLinkedList {
    public static ListNode solution(ListNode l1,ListNode l2){
    ListNode dummyHead = new ListNode(0);
    ListNode cur = dummyHead;
    while(l1 != null &&l2 != null){
    if(l1.data < l2.data){
    cur.next = l1;
    cur = cur.next;
    l1 = l1.next;
    }
    else {
    cur.next = l2;
    cur = cur.next;
    l2 = l2.next;
    }
    }
    // 任一为空,直接连接另一条链表
    if(l1 == null){
    cur.next = l2;
    }
    if(l2 == null){
    cur.next = l1;
    }
    return dummyHead.next;
    }
    //打印链表
    private static void print(ListNode node) {
    System.out.print(node.data +" ");
    if (node.next != null){
    print(node.next);
    }
    }
    public static void main(String[] args){
    ListNode node1 = new ListNode(1);
    ListNode node2 = new ListNode(2);
    ListNode node3 = new ListNode(3);
    ListNode node4 = new ListNode(4);
    ListNode node5 = new ListNode(5);
    ListNode node6 = new ListNode(6);
    ListNode node7 = new ListNode(7);
    ListNode node8 = new ListNode(8);
    ListNode node9 = new ListNode(9);
    node1.next = node2;
    node2.next = node3;
    node3.next = node4;
    node4.next = node5;
    node5.next = node6;
    node6.next = node7;
    node7.next = node8;
    node8.next = node9;
    ListNode list1 = new ListNode(1);
    ListNode list2 = new ListNode(1);
    ListNode list3 = new ListNode(3);
    ListNode list4 = new ListNode(33);
    ListNode list5 = new ListNode(45);
    ListNode list6 = new ListNode(65);
    ListNode list7 = new ListNode(75);
    ListNode list8 = new ListNode(82);
    ListNode list9 = new ListNode(91);
    list1.next = list2;
    list2.next = list3;
    list3.next = list4;
    list4.next = list5;
    list5.next = list6;
    list6.next = list7;
    list7.next = list8;
    list8.next = list9;
    print(node1);
    print(list1);
    System.out.println(" 合并后链表");
    print(solution(node1,list1));

    }
    }

    输出结果

    1 2 3 4 5 6 7 8 9 1 1 3 33 45 65 75 82 91
    合并后链表
    1 1 1 2 3 3 4 5 6 7 8 9 33 45 65 75 82 91
    Process finished with exit code 0

  • 相关阅读:
    445port入侵具体解释
    重构摘要12_大型重构
    Matlab画图-非常具体,非常全面
    期望DP
    自己实现一个SQL解析引擎
    信息熵(Entropy)究竟是用来衡量什么的?
    速算123,公布
    OCP-1Z0-051-题目解析-第28题
    选择排序
    Android入门第八篇之GridView(九宫图)
  • 原文地址:https://www.cnblogs.com/turningli/p/10488286.html
Copyright © 2020-2023  润新知