面试之路(29)-合并两个排序的链表(递归和非递归)
来源:互联网 发布:微信淘宝链接转换 编辑:程序博客网 时间:2024/05/22 03:45
链表的类:
class ListNode{ int key; ListNode next; }
思路:
- 这个和数组不一样,不需要采用双指针,从后往前来
代码:
递归
public ListNode merge(ListNode head1,ListNode head2){ if(head1 == null){ return head2; }else if(head2 == null){ return head1; } ListNode node = null; if(head1.key < head2.key){ node =head1; node.next = merge(head1.next,head2); }else{ node = head2; node.next = merge(head1,head2.next); } return node; }
非递归
public ListNode merge(ListNode head1,ListNode head2){ if(head1 == null){ return head2; }else if(head2 == null){ return head1; } ListNode node = null; if(head1.key < head2.key){ node = head1; head1 = head1.next; }else{ node = head2; head2 = head2.next; } ListNode current = node; while(head1 != null && head2 != null){ if(head1.key < head2.key){ node.next = head1; head1 = head1.next; node = node.next; }else{ node.next = head2; head2 = head2.next; node = node.next; } } if(head1 == null){ node.next = head2; } if(head2 == null){ node.next = head1; } return current;; }
2 0
- 面试之路(29)-合并两个排序的链表(递归和非递归)
- 合并两个排序的链表(非递归)
- 剑指offer——面试题17:合并两个排序的链表(非递归方法和递归方法)
- 合并排序(归并排序)的递归和非递归
- 链表面试题之合并有序的两个线性表-递归和非递归的方法
- 合并两个有序链表(递归非递归方法)
- 合并两个有序链表(非递归与递归)
- 剑指Offer 面试题25:合并两个排序的链表(递归+非递归) Java代码实现
- 合并两个链表递归和非递归实现
- 合并两个有序链表的递归与非递归
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 有序链表的合并(递归&非递归)
- 合并两个升序链表(非递归)
- 剑指Offer面试题16反转链表(递归和非递归),面试题17合并两个排序的链表(递归)
- 合并两个有序链表 递归和非递归的形式
- 非递归归并排序(二路合并排序),非递归合并排序
- 有序链表合并的递归和非递归算法
- 链表合并的递归和非递归方法
- MIME类型大全
- Nodejs(八)
- [乐意黎原创] PHP的增加时间
- android-各种动画加速器,各种插值器
- 数据分析框架Pandas入门
- 面试之路(29)-合并两个排序的链表(递归和非递归)
- Eclipse常用快捷键
- HDU 1009 FatMouse' Trade 简单贪心,细节处理
- 最大上升子列
- Java并发(四)同步容器
- redis学习笔记(12)---server基本流程
- 在Windows环境下搭建DNS
- STM32_SPI主从通信
- Ubuntu 14.04 下搭建SVN独立服务器