剑指offer每日一刷
来源:互联网 发布:比特币算法漏洞 编辑:程序博客网 时间:2024/06/10 08:34
题目名称:
合并两个排序的链表。
题目描述:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
链表定义:
/* * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val){ * this.val = val; * } * } */
方法一:递归
// 方法一:递归,25ms,占用内存在19M左右public ListNode Merge(ListNode list1, ListNode list2) {//list1和list2分别是两个链表的头节点if (list1 == null) {return list2;}if (list2 == null) {return list1;}//第一次if判断时,通过return语句返回合并后用作新链表的头节点if (list1.val <= list2.val) {list1.next = Merge(list1.next, list2);//第一次if语句之后的Merge函数用作合并链表的各个节点return list1;} else {list2.next = Merge(list1, list2.next);return list2;}}
方法二:非递归
//非递归,32ms,占用内存15M左右public ListNode Merge1(ListNode list1,ListNode list2){if(list1 == null){return list2;}if(list2 == null){return list1;}ListNode head = null;//记录链表合并后的头结点ListNode node = null; //用作合并链表的节点,指向合并后链表的尾节点while(list1 != null && list2 != null){if(list1.val <= list2.val){if(head == null){head = node = list1;}else{node.next = list1;node = node.next;}list1 = list1.next;}else{if(head == null){head = node = list2;}else{node.next = list2;node = node.next;}list2 = list2.next;}}if(list1 == null){node.next=list2;}if(list2 == null){node.next = list1;}return head;}
阅读全文
0 0
- 剑指offer每日一刷
- 每日一贴-100offer
- 剑指Offer每日一刷 -2017年11月10日
- 剑指Offer每日一刷 -2017年11月11日
- 剑指offer每日一刷-2017年11月12日
- 剑指offer每日一刷-2017年11月13日
- 剑指offer每日一刷-2017年11月14日
- 剑指offer每日一刷-2017年11月15日
- 剑指offer每日一刷-2017年11月16日
- 剑指offer每日一刷-2017年11月17日
- 剑指offer每日一刷-2017年11月19日
- 剑指offer每日一刷-2017年11月20日
- 剑指offer每日一刷-2017年11月21日
- 剑指offer每日一刷-2017年11月22日
- 剑指offer每日一刷-2017年11月24日
- 剑指offer每日一刷2017年12月5日
- 剑指offer每日一刷-2017年11月24日(补2017年11月23日)
- 每日AC-剑指offer-数组查找
- 每周LeetCode算法题(十二): 647. Palindromic Substrings
- 2017-11-26 DBA日记,oracle闪回查询的源头验证
- 55. Jump Game
- 6.15鸡兔同笼
- Java多线程同步---以银行存取钱的过程的简单代码实例
- 剑指offer每日一刷
- openpoker开源项目 源代码解析
- 【Java】HashMap源码分析(JDK1.8)
- 我在读pyTorch文档(二)
- Java8新特性
- MyBatis动态sql_foreach下foreach批量插入两种方式
- ubuntu上安装、卸载sublime3以及输入中文
- 04概要设计说明书(机房收费系统V2.1)
- 【笔试卷】JUREN