码迷,mamicode.com
首页 > 编程语言 > 详细

剑指offer——合并两个排序的链表

时间:2019-10-29 23:19:22      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:merge   合成   方法   处理   合并两个排序的链表   递归   合并   root   剑指offer   

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
 
代码实现(Java)
方案一:递归方法
 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5  
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode Merge(ListNode list1,ListNode list2) {
12         if(list1==null){
13             return list2;
14         }else if(list2==null){
15             return list1;
16         }
17         ListNode mergeListNode=null;
18         if(list1.val<list2.val){
19             mergeListNode=list1;
20             mergeListNode.next=Merge(list1.next,list2);
21         }else{
22             mergeListNode=list2;
23             mergeListNode.next=Merge(list1,list2.next);
24         }
25         return mergeListNode;
26     }
27 }

 方案二:非递归方法

 1 public static ListNode merge(ListNode head1, ListNode head2) {
 2         if (head1 == null) {
 3             return head2;
 4         }
 5 
 6         if (head2 == null) {
 7             return head1;
 8         }
 9 
10         ListNode root = new ListNode();
11         // 用于指向合并后的新链的尾结点
12         ListNode pointer = root;
13 
14         // 当两个链表都不为空就进行合并操作
15         while (head1 != null && head2 != null) {
16             if (head1.value < head2.value) {
17                 pointer.next = head1;
18                 head1 = head1.next;
19             } else {
20                 pointer.next = head2;
21                 head2 = head2.next;
22             }
23             pointer = pointer.next;
24         }
25 
26         // 如果第一个链表的元素未处理完将其,接到合并链表的最后一个结点之后
27         if (head1 != null) {
28             pointer.next = head1;
29         }
30 
31         // 如果第二个链表的元素未处理完将其,接到合并链表的最后一个结点之后
32         if (head2 != null) {
33             pointer.next = head2;
34         }
35         return root.next;
36     }

 

剑指offer——合并两个排序的链表

标签:merge   合成   方法   处理   合并两个排序的链表   递归   合并   root   剑指offer   

原文地址:https://www.cnblogs.com/wangqiong/p/11761947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!