zoukankan      html  css  js  c++  java
  • 剑指offer(12)

    来两道关于链表链接的题目:

    题目一:

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

      本题要考虑到其中一条链表是空或者两个都是空的情况。

      在每个链表安上一个指针,对比一次,提取一个结点,接到目标链表上。

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode Merge(ListNode list1,ListNode list2) {
            if(list1==null)
                return list2;
            if(list2==null)
                return list1;
            
            ListNode listMergeHead = null;
            ListNode point1 = list1;
            ListNode point2 = list2;
            
            if(point1.val<point2.val){
                listMergeHead = point1;
                listMergeHead.next = Merge(point1.next,point2);
            }else{
                listMergeHead = point2;
                listMergeHead.next = Merge(point1,point2.next);
            }
            
            return listMergeHead;
        }
    }
    

      接下来给出非递归方式

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode Merge(ListNode list1,ListNode list2) {
            if(list1==null)
                return list2;
            if(list2==null)
                return list1;
            
            ListNode listMergeHead = null;
            ListNode current = null;
            
            while(list1!=null&&list2!=null){
                if(list1.val<list2.val){
                    if(listMergeHead==null){
                        listMergeHead=current=list1;
                    }else{
                        current.next=list1;
                        current = current.next;
                    }
                    list1=list1.next;
                }else{
                    if(listMergeHead==null){
                        listMergeHead=current=list2;
                    }else{
                        current.next=list2;
                        current = current.next;
                    }
                    list2=list2.next;
                }
            }
            
            if(list1==null){
                current.next=list2;
            }
            if(list2==null){
                current.next=list1;
            }
            return listMergeHead;
        }
    }
    

     

  • 相关阅读:
    3DMax的OFusion插件使用问题
    eclipse调试java调用matlab程序的7.17dll找不到的问题
    C++malloc,calloc,realloc,free函数
    北漂工作心得
    [置顶] 使用sping AOP 操作日志管理
    你不知道的Eclipse用法:使用Allocation tracker跟踪Android应用内存分配
    [置顶] 程序员扩充人脉那些事儿
    linux常见笔试题
    数学之路(3)-机器学习(3)-机器学习算法-神经网络[4]
    Android屏幕相关设置
  • 原文地址:https://www.cnblogs.com/figsprite/p/10467124.html
Copyright © 2011-2022 走看看