zoukankan      html  css  js  c++  java
  • Leecode no.21 合并两个有序链表

    package com.example.demo.leecode;

    /**
    * 合并两个有序链表
    * @Date 2020/12/11
    * @author Tang
    *
    * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
    *
    * /**
    * * Definition for singly-linked list.
    * * public class ListNode {
    * * int val;
    * * ListNode next;
    * * ListNode() {}
    * * ListNode(int val) { this.val = val; }
    * * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    * * }
    *
    */
    public class MergeTwoSortedLists {

    public ListNode execute(ListNode l1, ListNode l2){

    if(l1 == null){
    return l2;
    }
    if(l2 == null){
    return l1;
    }

    ListNode firstNode;

    ListNode endNode;

    //先确定头节点
    if(l1.val <= l2.val){
    firstNode = l1;
    endNode = firstNode;
    l1 = l1.next;
    }else{
    firstNode = l2;
    endNode = firstNode;
    l2 = l2.next;
    }

    while(true){
    if(l1 == null || l2 == null){
    break;
    }
    if(l1.val <= l2.val){
    endNode.next = l1;
    endNode = l1;
    l1 = l1.next;
    }else{
    endNode.next = l2;
    endNode = l2;
    l2 = l2.next;
    }
    }

    while(l1 != null){
    endNode.next = l1;
    endNode = l1;
    l1 = l1.next;
    }
    while(l2 != null){
    endNode.next = l2;
    endNode = l2;
    l2 = l2.next;
    }
    return firstNode;


    }

    public static void main(String[] args) {

    ListNode left1 = new ListNode(1);
    ListNode left2 = new ListNode(2);
    ListNode left3 = new ListNode(5);
    ListNode left4 = new ListNode(6);
    ListNode left5 = new ListNode(6);
    ListNode left6 = new ListNode(8);
    left1.next = left2;
    left2.next = left3;
    left3.next = left4;
    left4.next = left5;
    left5.next = left6;

    ListNode right1 = new ListNode(1);
    ListNode right2 = new ListNode(2);
    ListNode right3 = new ListNode(2);
    ListNode right4 = new ListNode(7);
    right1.next = right2;
    right2.next = right3;
    right3.next = right4;


    ListNode result = new MergeTwoSortedLists().execute(left1, right1);
    System.out.println(result.val);
    while(result.hasNext()){
    result = result.next;
    System.out.println(result.val);
    }

    }


    }

    class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) {
    this.val = val;
    }
    ListNode(int val, ListNode next) {
    this.val = val;
    this.next = next;
    }
    boolean hasNext(){
    return next != null;
    }

    }
  • 相关阅读:
    【deep learning精华部分】稀疏自编码提取高阶特征、多层微调完全解释及代码逐行详解
    【machine learning通俗讲解code逐行注释】之线性回归实现
    softmax实现(程序逐句讲解)
    softmax回归(理论部分解释)
    AtomicInteger小小的理解
    jdk8新特性之lambda expressions
    i++ 与 ++i 的从字节码层面看二者的区别
    jdk8永久代从方法区移除的验证
    复杂事件处理引擎—Esper 处理模型
    复杂事件处理引擎—Esper参考(事件部分)
  • 原文地址:https://www.cnblogs.com/ttaall/p/14119651.html
Copyright © 2011-2022 走看看