博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
合并两个排序的链表
阅读量:5043 次
发布时间:2019-06-12

本文共 2459 字,大约阅读时间需要 8 分钟。

来源:牛客网 http://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。返回合并链表的头节点即可。

1 class ListNode { 2     int val; 3     ListNode next = null; 4  5     ListNode(int val) { 6         this.val = val; 7     } 8 } 9 public class TT {10 11     public static void main(String[] args) {12         ListNode node1=new ListNode(1);13         ListNode node2=new ListNode(2);14         ListNode node3=new ListNode(3);15         ListNode node4=new ListNode(4);16         ListNode node5=new ListNode(5);17         ListNode node6=new ListNode(6);18 19         node1.next=node3;20         node3.next=node5;21         node2.next=node4;22         node4.next=node6;23 24         ListNode k = Merge(node1,node2);25         while(k!=null){26             System.out.print(k.val+" ");27             k=k.next;28         }29 30 31     }32 33     public static ListNode Merge(ListNode list1,ListNode list2) {34         if(list1==null) return list2;35         else if(list2==null) return list1;36         37         ListNode p = new ListNode(0);38         ListNode head=p; // 39         while(true){40             if(list1.val<=list2.val){41                 p.next=list1;42                 list1=list1.next;43                 p=p.next;44             }else{45                 p.next=list2;46                 list2=list2.next;47                 p=p.next;48             }49 50             if(list1==null){51                 while(list2!=null){52                     p.next=list2;53                     p=p.next;54                     list2=list2.next;55                 }56                 break;57             }58 59             if(list2==null){60                 while(list1!=null){61                     p.next=list1;62                     p=p.next;63                     list1=list1.next;64                 }65                 break;66             }67         }68 69         return head.next;70         71     }72 }

 

另一种递归写法:

1 public ListNode Merge(ListNode list1, ListNode list2) { 2     if (list1 == null) 3         return list2; 4     else if (list2 == null) 5         return list1; 6     ListNode mergeHead = null; 7     if (list1.val < list2.val) { 8         mergeHead = list1; 9         mergeHead.next = Merge(list1.next, list2);10     } else {11         mergeHead = list2;12         mergeHead.next = Merge(list1, list2.next);13     }14     return mergeHead;15 16 }

 

转载于:https://www.cnblogs.com/duanguyuan/p/5681565.html

你可能感兴趣的文章
yaml文件 .yml
查看>>
linux字符集修改
查看>>
phpcms 添加自定义表单 留言
查看>>
mysql 优化
查看>>
读书笔记 ~ Nmap渗透测试指南
查看>>
WCF 配置文件
查看>>
动态调用WCF服务
查看>>
oracle导出/导入 expdp/impdp
查看>>
类指针
查看>>
css修改滚动条样式
查看>>
2018.11.15 Nginx服务器的使用
查看>>
Kinect人机交互开发实践
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
android客户端向服务器发送请求中文乱码的问
查看>>
Symfony翻译教程已开课
查看>>
TensorFlow2.0矩阵与向量的加减乘
查看>>
NOIP 2010题解
查看>>
javascript中的each遍历
查看>>
String中各方法多数情况下返回新的String对象
查看>>