题解 | #合并两个排序的链表#

合并两个排序的链表

http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

思路

将递归结果挂在val较小的节点后面

步骤

  1. 递归的终止判断:其中一条链表为空
  2. 比较得出val值较小的节点,并保存下来little
  3. val值较小的链表继续往后走,并将递归结果挂在little后面
  4. 返回little
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        // 终止条件
        // 当其中一个链表为空时,返回另外一个链表
        if(list1 == null || list2 == null){
            return list1==null?list2:list1;
        }
        // 将val值小的节点存储下来
        ListNode little = list1.val<list2.val ? list1 : list2;
        // val较小的链表指针往后走
        // 将递归结果挂在当前具有较小val的链表后面
        little.next = Merge(little.next,little==list1?list2:list1);
        return little;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务