zoukankan      html  css  js  c++  java
  • 剑指Offer_编程题_合并两个排序的链表

    剑指Offer_编程题_合并两个排序的链表

    题目描述

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
     

    题目答案,思路

    https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337?f=discussion

    递归版本

    链接:https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337?f=discussion
    来源:牛客网
    
    public ListNode Merge(ListNode list1,ListNode list2) {
           if(list1 == null){
               return list2;
           }
           if(list2 == null){
               return list1;
           }
           if(list1.val <= list2.val){
               list1.next = Merge(list1.next, list2);
               return list1;
           }else{
               list2.next = Merge(list1, list2.next);
               return list2;
           }       
       }

    非递归版本

    public class Solution {
        public ListNode Merge(ListNode list1,ListNode list2) {
        ListNode  root = new ListNode(-1);
            //临时指向的节点,可以理解为临时的 root 尾节点
            ListNode last = root;
            while (list1 != null && list2 != null) {
                if (list1.val <= list2.val) {
                    //重新
                    last.next=list1;
                    last = list1;
                    list1 = list1.next;
                } else {
                    last.next = list2;
                    last = list2;
                    list2 = list2.next;
                }
            }
            //把未结束的链表连接到合并后的链表尾部
            if (list1 != null) {
                last.next = list1;
            }
            if (list2 != null) {
                last.next = list2;
            }
            return root.next;
        }
    }

    测试代码

    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    
    
    public class TestListNode {
    
        //        链接:https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337?f=discussion
    //        来源:牛客网
    //尾插法创建单链表  队列形式先进先出
        public void back(ListNode node, int data) {
            if (data < 10) {
                ListNode next = new ListNode(data);
                next.val = data;
                next.next = null;
                node.next = next;
                back(next,data+3);
            }
        }
    
        public void back2(ListNode node, int data) {
            if (data < 10) {
                ListNode next = new ListNode(data);
                next.next = null;
                node.next = next;
                back2(next, data=data+2);
            }
        }
    
    
    
        public static void main(String[] args) {
             ListNode headNode;
             ListNode headNode2;
            TestListNode list1 = new TestListNode();
            headNode = new ListNode(3);//头指针
            list1.back(headNode, 4);//后插法
    
            System.out.println("创建后的链表是:");
    //        while (headNode.next != null) {
    //            headNode = headNode.next;
    //            System.out.print(headNode.val + " ");
    //        }
            System.out.println("-----------------------------");
            TestListNode list2 = new TestListNode();
            headNode2 = new ListNode(4);//头指针
            list2.back2(headNode2, 5);//后插法
    
    
            System.out.println("创建后的链表是:");
    //        while (headNode2.next != null) {
    //            headNode2 = headNode2.next;
    //            System.out.print(headNode2.val + " ");
    //        }
    
            ListNode merged=  new Solution().Merge(headNode,headNode2);
    
            System.out.println("merge :");
            while (merged.next != null) {
                merged = merged.next;
                System.out.print(merged.val + " ");
            }
    
        }
    
    }
  • 相关阅读:
    solr
    2.配置Flutter代码编辑器(IDE)
    1.Flutter的下载安装和环境配置
    ReactNative开发环境配置,新手踩坑必备.我也是新手
    汉字转拼音,获取汉字首字母
    For循环性能优化
    JavaScript滑块简易取色器
    C# 获取汉字拼音首字母(修正X问题,真正修正)
    团队项目-个人博客5.31
    团队项目-个人博客5.30
  • 原文地址:https://www.cnblogs.com/liran123/p/12767907.html
Copyright © 2011-2022 走看看