剑指offer经典题目整理(四)

一、树的子结构

1.链接

树的子结构_牛客题霸_牛客网 (nowcoder.com)

2.描述

给两颗二叉树A B,判断B是不是A的子结构

3.思路

将问题拆解开来,首先是找到a树中子结构的位置,然后是判断是否相同,也就是说,我们需要去遍历一边a树,逐一把每个节点作为根去和b的根进行判断是否相同,如果相同,则说明确实是子结构,此外,题目还要求,空树不属于任何树的子结构

4.参考代码

ps:一开始理解错了子结构的意思,理解成子树了,所以判断是否子结构的函数名字写的是is_same

class Solution 
{
public:
	bool is_same(TreeNode* A, TreeNode* B)
	{
		if(B == nullptr)
		{
			return true;
		}
		if(A == nullptr)
		{
			return false;
		}
		if(A->val != B->val)
		{
			return false;
		}
		return is_same(A->left, B->left) && is_same(A->right, B->right);
	}

    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) 
	{
		if(pRoot1 == nullptr || pRoot2 == nullptr)
		{
			return false;
		}
		bool ret = is_same(pRoot1, pRoot2);
		if(ret)
		{
			return true;
		}
		else
		{
			return HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right,pRoot2);
		}
    }
};

二、二叉树的镜像

1.链接

二叉树的镜像_牛客题霸_牛客网 (nowcoder.com)

2.描述

操作给定的二叉树,将其变换为源二叉树的镜像。

3.思路

通过观察发现,镜像后就是原二叉树每个节点的左右子树交换,因此很容易想到,用递归的方法遍历每个节点,然后去将每个节点的左右子树交换,遇到空则返回

4.参考代码

class Solution {
public:

    TreeNode* Mirror(TreeNode* pRoot) 
    {
        if(pRoot == nullptr)
        {
            return nullptr;
        }
        TreeNode* tmp = pRoot->left;
        pRoot->left = pRoot->right;
        pRoot->right = tmp;
        Mirror(pRoot->left);
        Mirror(pRoot->right);
        return pRoot;
    }
};

三、删除链表重复节点

1.链接

删除链表中重复的结点_牛客题霸_牛客网 (nowcoder.com)

2.描述

给一个单链表,要求删掉所有重复的区间,一个不留,然后返回

3.思路

4.参考代码

class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) 
    {
        if(pHead == nullptr)
        {
            return nullptr;
        }

        ListNode* newhead = new ListNode(0);
        newhead->next = pHead;
        ListNode* fast = pHead;
        ListNode* slow = newhead;

        while(fast)
        {
            while(fast->next && fast->val != fast->next->val)
            {
                fast = fast->next;
                slow = slow->next;
            }
            while(fast->next && fast->val == fast->next->val)
            {
                fast = fast->next;
            }
            if(slow->next != fast)
            {
                slow->next = fast->next;
            }
            fast = fast->next;
        }
        ListNode* ret = newhead->next;
        delete newhead;
        return ret;
    }
};

总结

这次的总结前两题主要考递归和对二叉树的控制,第三题考验的是对单链表的控制和对边界条件的考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/451968.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小白学机器学习8】统计里的自由度

目录 1 自由度 /degree of freedom / df 1.1 物理学的自由度(摘自网上 ^) 1.2 数学里的自由度 1.2.2 统计里的自由度 1.2.3 需要补充线性代数的,用线性代数来理解自由度 1.3 统计学里自由度的定义 1.4 自由度的公式 1.5 线性回归公式…

stm32使用时钟生成PWM时调用__HAL_TIM_SetAutoreload导致PWM消失处理

stm32使用时钟生成PWM时调用__HAL_TIM_SetAutoreload导致PWM消失处理 这一个是配置的时候没有使用影子寄存器导致的, 如果加载的Autoreload的值比原来的这一个值小, 这是会出现一个问题, 如果计数器里面的值记为Count, 如果改变的时候New_Autoreload < Count < Old_Auto…

结构体的增删查改

结构体&#xff0c;是为了解决生活中的一些不方便利用c语言自带数据类型来表示的问题。例如表示一个学生&#xff0c;那么学生这个个体假如用c语言自带数据类型怎么表示呢。可以使用名字&#xff0c;也就是字符数组&#xff1b;也可以使用学号&#xff0c;也就是int类型。但是这…

Hadoop学习2:完全分布集群搭建

文章目录 Fully-Distributed Operation&#xff08;完全分布模式&#xff09; 重点机器环境同步集群规划配置文件修改以及同步步骤0&#xff1a;下面其他步骤涉及修改配置以这里为准&#xff08;要不然部署使用过程会有很多问题&#xff09;通用配置&#xff08;三台节点机器&a…

工具-百度云盘服务-身份认证

目标 通过百度网盘API的方式去获取网盘中的文件&#xff0c;要实现这的第一步就是需要获取网盘的权限。资料(参考) 如果期望应用访问用户的网盘文件&#xff0c;则需要经过用户同意&#xff0c;这个流程被称为“授权”。百度网盘开放平台基于 OAuth2.0 接入授权。OAuth2.0 是…

配置中心概述

目录 一、配置中心的定义 二、配置中心的工作 三、配置中心的作用 四、SpringBoot中的配置文件 一、配置中心的定义 配置中心就是用来管理项目当中所有配置的系统&#xff0c;也是微服务系统当中不可或缺的一部分。 nacos是一个更易于构建云原生应用的动态服务发现、配置管理…

服务器被大流量攻击怎么办?如何防御攻击?

随着网络的发展&#xff0c;我们所遇到的安全挑战也越来越多。尤其是近年来&#xff0c;网络攻击频发&#xff0c;许多互联网企业深受其扰。为了不影响自身业务的稳定运行&#xff0c;许多企业都在想方设法的寻求解决方案&#xff0c;防止服务器被攻击而影响业务发展。下面我们…

跨境电商选品实战——Ownips静态ip代理+Python爬虫轻松搞定Lazada电商选品

文章目录 一、引言二、Lazada电商平台爬虫实战2.1、分析Lazada电商平台的商品列表接口2.2、定位商品列表计算逻辑2.3、封装IP代理2.4、运行爬虫 三、数据处理及选品分析四、Ownips——企业级全球静态IP代理 一、引言 互联网与外贸的结合&#xff0c;催生了蓬勃兴起的跨境电子商…

el-Switch 开关二次确认

前言 最近在做毕设&#xff0c;有个需求是点击按钮控制用户的状态是否禁用&#xff0c;就看到element有个switch组件可以改造一下&#xff0c;就上网看了一下&#xff0c;结果为了这个效果忙活了很久。。。所以说记录一下&#xff0c;让大家少踩坑。 前置条件 先看完我的需求再…

spring-boot操作elasticsearch

一、环境准备 springboot与elasticsearch的更新都非常快&#xff0c;为了避免兼容性问题&#xff0c;要注意下选择的版本问题。具体的可参考官网 --> springboot与elasticsearch版本兼容性 1.1导入依赖 <dependencies><dependency><groupId>org.spring…

挖掘内容资讯App流量价值,Xinstall传参安装技术引领行业变革

在移动互联网时代&#xff0c;内容资讯App已经成为人们获取信息的重要途径。然而&#xff0c;随着用户量的不断增长和业务的不断拓展&#xff0c;如何有效地挖掘流量价值&#xff0c;成为了摆在众多内容资讯App面前的一大难题。而传参安装技术的出现&#xff0c;为这一难题的解…

Web——HTML

一.HTML概述 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言。可以使用 HTML 来建立自己的 WEB 站点&#xff0c;HTML 运行在浏览器上&#xff0c;由浏览器来解析。 二.…

2024 遗传编程实战(一)基因实战

2024 遗传编程实战&#xff08;一&#xff09;基因实战 文章目录 2024 遗传编程实战&#xff08;一&#xff09;基因实战一、遗传编程实战介绍1、遗传编程简介2、遗传编程和进化论的关系3、遗传编程过程解释 二、基于遗传编程的例子1、实战题目介绍2、遗传算法的伪代码3、遗传实…

无人机机载频谱监测方案助力空中频谱监测与干扰排查

作者介绍 一、方案背景 频谱资源是通信最重要的资产之一&#xff0c;随着宽带无线业务的快速增长&#xff0c;对频率资源的需求大幅增加。未来频率资源的供需矛盾将非常突出&#xff0c;空中频谱环境也会越来越复杂&#xff0c;对于工程师来说&#xff0c;在复杂的电磁环境条件…

视频监控/云存储EasyCVR视频融合平台设备增删改操作不生效是什么原因?

国标GB28181协议EasyCVR安防平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;平台支持7*24小时实时高清视频监控&#xff0c;能同时播放多路监控视频流&#xf…

C++开发基础——类模板

一&#xff0c;基础定义 类模板是用来生成类的蓝图&#xff0c;是一种创建类的方式&#xff0c;同一套类模板可以生成很多种不同的类。 编译器基于类模板生成的每个类被称为类模板的实例。 第一次使用模板类型声明变量时&#xff0c;会创建类模板的一个实例&#xff0c; 以后…

3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)

三个关键要素 从相机配准的过程中得到的稀疏点云开始&#xff0c;使用3D Gaussian表示场景; 3D Gaussian: 是连续体积辐射场能够防止不必要的空空间优化。对 3D Gaussion进行交叉优化和密度控制: 优化各向异性血方差对场景精确表示。使用快速可视感知渲染算法来进行快速的训练…

最好用的流程编辑器bpmn-js系列之基本使用

BPMN&#xff08;Business Process Modeling Notation&#xff09;是由业务流程管理倡议组织BPMI&#xff08;The Business Process Management Initiative&#xff09;开发的一套标准的业务流程建模符号规范。其目的是为用户提供一套容易理解的标准符号&#xff0c;这些符号作…

Java代码审计工程师直播第六期

本期直播课程将深入探讨Java代码审计的关键概念和技术。涵盖课题包括安全漏洞分析、代码审查方法、常见漏洞案例分析等。学员将通过实例掌握代码审计实战技能&#xff0c;提升对Java应用程序安全的认知和技能水平。 课程大小&#xff1a;6.1G 课程下载&#xff1a;https://do…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的稻田虫害检测系统详解(深度学习+Python代码+UI界面+训练数据集)

摘要&#xff1a;本篇文章深入探讨了如何利用深度学习技术开发一个用于检测稻田虫害的系统&#xff0c;并且分享了完整的实现过程和资源代码下载。该系统采用了当前的YOLOv8、YOLOv7、YOLOv6、YOLOv5算法&#xff0c;对其进行了性能对比&#xff0c;包括mAP、F1 Score等关键指标…