剑指offer:(17)代码的鲁棒性:合并两个排序的链表
来源:互联网 发布:洛阳市青峰网络 编辑:程序博客网 时间:2024/05/16 13:59
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
测试用例:
1、功能测试
输入的两个链表有多个节点,节点的值互不相同
存在值相等的多个节点
2、特殊输入测试
两个链表的一个或者两个都为null
思路:递归解决
package cn.com.jianzhioffer;public class Solution17 {public static class ListNode {int val;ListNode next = null;public ListNode(int val) {this.val = val;}}public static ListNode mergeList(ListNode list1,ListNode list2){ //head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null;if(list1 == null) return list2;if(list2 == null) return list1;ListNode mergeHead = null;if(list1.val<list2.val){mergeHead = list1;mergeHead.next = mergeList(list1.next, list2);}else{mergeHead = list2;mergeHead.next = mergeList(list1, list2.next);} return mergeHead;}}
非递归版本:
定义两个指针,一个头指针,一个指向当前位置的指针(不停的变化,保证指向)
package co.com.jianzhioffer;public class Solution17 {public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}}/* * 非递归实现 */public ListNode Merge(ListNode list1, ListNode list2) {if (list1 == null)return list2;if (list2 == null)return list1;ListNode mergeHead = null;//存合并后链表的头指针ListNode current = null;//存储当前位置指针,在不断的变化while (list1 != null && list2 != null) {if (list1.val < list2.val) {if (mergeHead == null) {mergeHead = current = list1;} else {current.next = list1;current = current.next;}list1 = list1.next;} else {if (mergeHead == null) {mergeHead = current = list2;} else {current.next = list2;current = current.next;}list2 = list2.next;}}if(list1 == null){current.next = list2;}else{current.next = list1;}return mergeHead;}}
0 0
- 剑指offer:合并两个排序的链表 代码实现
- 剑指offer 17题 【代码的鲁棒性】合并两个排序的链表
- 剑指offer:(17)代码的鲁棒性:合并两个排序的链表
- 剑指offer 3.4 代码的鲁棒性2- 合并两个排序的链表
- 《剑指offer》刷题笔记(代码的鲁棒性):合并两个排序的链表
- 剑指offer 17-合并两个排序表的链表
- 剑指offer-17:合并两个排序的链表
- 剑指offer:17 合并两个排序的链表
- 剑指Offer 17 合并两个排序的链表
- 剑指offer面试17 合并两个排序的链表
- 剑指offer 17---合并两个排序的链表
- 剑指offer-17:合并两个排序的链表
- 剑指offer 17 合并两个排序的链表
- 剑指offer代码解析——面试题17合并两个排序的链表
- 【剑指offer】3.4代码的鲁棒性——面试题17:合并两个排序的链表
- 剑指Offer之合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指offer:合并两个排序的链表
- Ubuntu中安装Visual Studio Code
- win10 qt5.7.1 VS2015 libqxt-qt5编译
- 阿里2017前端实习生笔试编程第一题
- android Toolbar去掉左右边界
- 要嫁就嫁程序猿——钱多话少死的早
- 剑指offer:(17)代码的鲁棒性:合并两个排序的链表
- HttpClient4.4.1模拟登录知乎
- 关于mybatis中llike模糊查询中#和$的使用
- Uva524—素数环
- Mac Os自带Apache修改自定义项目配置报403 Forbidden, You don't have permission to access/on this server解决
- EVUS登记系统
- List,Set,Map用法详解
- android 插件加载机制之一
- Python学习笔记--3