菜鸟笔记
提升您的技术认知

剑指offer

《剑指offer》刷题目笔记

剑指offer 数组

《剑指offer》二维数组中的查找《剑指offer》旋转数组的最小数字《剑指offer》调整数组顺序使奇数位于偶数前面《剑指offer》数组中出现次数超过一半的数字《剑指offer》连续子数组的最大和《剑指offer》把数组排成最小的数《剑指offer》数组中的逆序对《剑指offer》数字在排序数组中出现的次数《剑指offer》数组中只出现一次的数字《剑指offer》数组中重复的数字《剑指offer》构建乘积数组

剑指offer 字符串

《剑指offer》替换空格《剑指offer》字符串的排列《剑指offer》第一个只出现一次的字符《剑指offer》左旋转字符串《剑指offer》翻转单词顺序序列《剑指offer》把字符串转换成整数《剑指offer》正则表达式匹配《剑指offer》表示数值的字符串

剑指offer 链表

《剑指offer》从尾到头打印链表《剑指offer》链表中倒数第k个结点《剑指offer》反转链表《剑指offer》合并两个排序的链表《剑指offer》复杂链表的复制《剑指offer》两个链表的第一个公共结点《剑指offer》链表中环的入口结点《剑指offer》删除链表中重复的结点

剑指offer 树

《剑指offer》重建二叉树《剑指offer》树的子结构《剑指offer》二叉树的镜像《剑指offer》从上往下打印二叉树《剑指offer》二叉树中和为某一值的路径《剑指offer》二叉树的深度《剑指offer》平衡二叉树《剑指offer》二叉树的下一个结点《剑指offer》对称的二叉树《剑指offer》按之字顺序打印二叉树《剑指offer》把二叉树打印成多行《剑指offer》序列化二叉树

《剑指offer》合并两个排序的链表-ag真人游戏

阅读 : 164

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

解题思路

先判断输入的链表是否为空的指针。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接返回第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。

两个链表都是排序好的,我们只需要从头遍历链表,判断当前指针,哪个链表中的值小,即赋给合并链表指针即可。使用递归就可以轻松实现。

代码实现(c )

/*
struct listnode {
    int val;
    struct listnode *next;
    listnode(int x) :
            val(x), next(null) {
    }
};*/
class solution {
public:
    listnode* merge(listnode* phead1, listnode* phead2)
    {
        //判断指针是否为空
        if(phead1 == null){
            return phead2;
        }
        else if(phead2 == null){
            return phead1;
        }
        listnode* pmergedhead = null;
        if(phead1->val < phead2->val){
            pmergedhead = phead1;
               pmergedhead->next = merge(phead1->next, phead2);
        }
        else{
            pmergedhead = phead2;
               pmergedhead->next = merge(phead1, phead2->next);
        }
        return pmergedhead;
    }
};

代码实现(python2.7)

# -*- coding:utf-8 -*-
# class listnode:
#     def __init__(self, x):
#         self.val = x
#         self.next = none
class solution:
    # 返回合并后列表
    def merge(self, phead1, phead2):
        # write code here
        if not phead1:
            return phead2
        if not phead2:
            return phead1
        pmergehead = none
        if phead1.val < phead2.val:
            pmergehead = phead1
            pmergehead.next = self.merge(phead1.next, phead2)
        else:
            pmergehead = phead2
            pmergehead.next = self.merge(phead1, phead2.next)
        return pmergehead
网站地图