万物的算法日记|第六天

news2024/9/23 19:21:39

笔者自述:

一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结,因为后半年也该找实习了,所以每日的算法题要进行恶补,勤能补拙,因此有了这一个算法日记系列;

必读: 大佬你好,感谢您的阅读,这篇文章是我的算法笔记,方便我每日回顾;
为了不耽误您的时间,我把本篇日记的考点方向和算法知识总结列出来,如果对您有需要就继续向下进行阅读

也希望对您有帮助,和您一起通关算法!致谢

请添加图片描述

算法语言:java
题目来源:力扣–书本–初级算法,可以在力扣中搜索相关题名找到更多解法和大神方法
本文知识点:
本片文章主题搜索与回溯算法的练习 不会的同学多写几遍,然后慢慢去理解整个过程的实现,关于三道题,主要思想是递归实现或者使用队列或者栈来进行辅助操作。

文章目录

  • 剑指 Offer 26. 树的子结构(需要多回顾)
  • 剑指 Offer 27. 二叉树的镜像
  • 剑指 Offer 28. 对称的二叉树

剑指 Offer 26. 树的子结构(需要多回顾)

在这里插入图片描述
代码:

public boolean isSubStructure1(TreeNode A,TreeNode B){
        if(B == null) return false;
        return search(A,B);
    }
    public boolean compare(TreeNode A,TreeNode B){
        if( B == null) return true;
        if(A == null) return false;
        return A.val == B.val && compare(A.left,B.left) && compare(A.right,B.right);
    }
    public boolean search(TreeNode A,TreeNode B){
        if(A == null) return false;
        if(A.val == B.val && compare(A,B)) return true;
        return search(A.left,B) || search(A.right,B);
    }

学到的知识:

  1. 说实话这道题我写不出来。通过分析代码可以看出,通过递归分析,从当前节点向左右子树进行判断比对,题中说明找到是子段而非子树,所以B只要满足是A的一部分就行,这道题需要多看和练习

剑指 Offer 27. 二叉树的镜像

在这里插入图片描述
代码:

 //方法一:使用递归 ----这我是真想不出来。。
    public TreeNode mirrorTree(TreeNode root) {
        if(root == null) return null;
        TreeNode tmp = root.left;
        root.left = mirrorTree(root.right);
        root.right = mirrorTree(tmp);
        return root;
    }
    //方法二:使用辅助栈,
    public TreeNode mirrorTree1(TreeNode root){
        if(root == null) return null;
        Stack<TreeNode> stack = new Stack<>(){{add(root);}};
        while(!stack.isEmpty()){
            TreeNode node = stack.pop();
            if(node.left != null) stack.add(node.left);
            if(node.right != null) stack.add(node.right);
            TreeNode tmp = node.left;
            node.left = node.right;
            node.right = tmp;
        }
        return root;
    }

学到的知识:

  1. 这道题一样,最简便的方法是使用递归,同时可以借助队列和栈来辅助操作,不过我是真想不到用递归怎么写,我想到的是使用队列实现,实现了一部分哈哈。

剑指 Offer 28. 对称的二叉树

在这里插入图片描述
代码:

//方法二:使用递归
    public boolean isSysmmetric1(TreeNode root){
        return root == null || dfs(root.left,root.right);
    }
    public boolean dfs(TreeNode L,TreeNode R){
        if(L == null && R == null) return  true;
        if(L == null || R == null || L.val != R.val) return false;
        return dfs(L.left,R.right) && dfs(L.right,R.left);
    }

学到的知识:

  1. 递归的使用,不会的话多练习几遍,然后再去理解其中的实现过程,最后去自己实现一下。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DJ4-2 数据报网络和虚电路网络

目录 一、连接和无连接服务 二、数据报网络 1、数据报网络的转发表 2、数据报网络的特点 三、虚电路网络 (Virtual Circuits)* 1、虚电路网络的工作方式 2、虚电路网络的特点 一、连接和无连接服务 任何网络中的网络层只会提供两种服务之一&#xff0c;不会同时提供 数…

Mysql数据库之事务(山高水远,他日江湖再见)

文章目录 一、事务的概念二、事务的ACID特点1.原子性&#xff08;Atomicity&#xff09;2.一致性&#xff08;Consistency&#xff09;3.隔离性&#xff08;lsolation&#xff09;4.持久性&#xff08;Durability) 三、并发访问表的一致性问题和事务的隔离级别1.并发访问表的一…

融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)_机器学习_人工智能_模型竞赛_论文参考

我看了很多关于融合模型stacking文章&#xff0c;很多作者倾向于赞美融合模型stacking&#xff0c;对其缺点轻描淡写&#xff0c;这容易误导初学者。一叶障目就是这意思。 我的很多学员喜欢用融合模型作为论文或专利创新点&#xff0c;这是一个热门技术。 最近有个同学在论文…

设计模式之单例模式笔记

设计模式之单例模式笔记 说明Singleton(单例)目录单例模式之饿汉式-静态成员变量写法测试类 单例模式之饿汉式-静态代码块写法测试类 单例模式之懒汉式-线程不安全写法和线程安全写法测试类 单例模式之懒汉式-双重检查锁方式(推荐使用的方式)单例模式之懒汉式-静态内部类方式(推…

Mysql数据库之存储引擎(羡慕她人,不如提升自己)

一、存储引擎概念 MySQL中的数据用各种不同的技术存储在文件中&#xff0c;每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力&#xff0c;这些不同的技术以及配套的功能在MySQL中称为存储引擎。 存储引擎是MySQL将数据存储在文件系统中的存储方…

ELK日志收集系统简述

一、概述 &#xff08;一&#xff09;ELK由三个组件构成 ELK是三个开源软件的缩写&#xff0c;分别是Elasticsearch、Logstash、Kibana ELK 架构基本组成 &#xff08;二&#xff09;作用 1、日志收集 2、日志分析 3、日志可视化 &#xff08;三&#xff09;为什么使用EL…

计网之应用层

因特网协议概述 常用协议应用层HTTP&#xff08;超文本传输协议&#xff09;、FTP&#xff08;文件传输协议&#xff09;、SMTP&#xff08;简单邮件传输协议&#xff09;、DNS&#xff08;域名系统&#xff09;、DHCP&#xff08;动态主机配置协议&#xff09;、SNMP&#xff…

15-6.自定义组件的代码共享

在微信小程序中使用 behaviors 进行代码共享&#xff0c;功能类似于vue的mixins 每个behavior可以包含一组属性、数据、生命周期函数和方法 每个组件可以引用多个behavior&#xff0c;behavior也可以引用其他的behavior 目录 1 创建behavior 2 使用behavior 3 behavio…

机器学习融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)

我看了很多关于融合模型stacking文章&#xff0c;很多作者倾向于赞美融合模型stacking&#xff0c;对其缺点轻描淡写&#xff0c;这容易误导初学者。一叶障目就是这意思。 我的很多学员喜欢用融合模型作为论文或专利创新点&#xff0c;这是一个热门技术。 最近有个同学在论文…

MySQL:七种 SQL JOINS 的实现(图文详解)

MySQL&#xff1a;7种SQL JOINS的实现 前言一、图示表示二、代码举例1、INNER JOIN&#xff08;内连接&#xff09;2、LEFT JOIN&#xff08;左连接&#xff09;3、RIGHT JOIN&#xff08;右连接&#xff09;4、OUTER JOIN&#xff08;全连接&#xff09;5、LEFT EXCLUDING JOI…

微信小程序入门学习02-TDesign中的自定义组件

目录 1 显示文本2 自定义组件3 变量定义4 值绑定总结 我们上一篇讲解了TDesign模板的基本用法&#xff0c;如何开始阅读模板。本篇我们讲解一下自定义组件的用法。 1 显示文本 官方模板在顶部除了显示图片外&#xff0c;还显示了一段文字介绍。文字是嵌套在容器组件里&#xf…

数据库的操作

前言 在之前的文章中&#xff0c;我们已经了解了什么是数据库&#xff0c;以及为什么有数据库&#xff0c;和数据库有什么作用&#xff0c;有了这些宏观概念之后&#xff0c;本章为大家进一步详细介绍对于数据库在Linux上如何具体操作。 1.创建数据库 1.1创建数据库语法 语法…

读书:《敏捷软件开发工具----精益开发方法》

《敏捷软件开发工具----精益开发方法》&#xff08;Lean Software Development: An Agile Toolkit&#xff09;由Mary Poppendieck和Tom Poppendieck合著&#xff0c;2003年出版&#xff0c;尽管已经有20个年头了&#xff0c;但书中的理念和方法仍然具有很高的实践价值&#xf…

SpringBoot2概览-运维实用篇

知识点 使用SpringBoot提供的maven插件可以将工程打包成可执行jar包然后执行&#xff0c;即java –jar xxx.jar&#xff0c;下面的图是MANIFEST.MF文件的内容&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId>…

【MySQL】如何速通MySQL(3)

&#x1f4cc;前言&#xff1a;本篇博客介绍如何速通MySQL的第二篇&#xff0c;主要介绍Mysql中主要的基础的入门&#xff0c;学习MySQL之前要先安装好MySQL&#xff0c;如果还没有安装的小伙伴可以看看博主前面的博客&#xff0c;里面有详细的安装教程。或者看一下下面这个链接…

136-nago

PEID查看你程序有没有壳&#xff0c;发现是汇编语言程序 打开程序&#xff0c;我们发现程序是由Nag提示窗口的。 我们先进行去Nag提示。 进入回调函数&#xff0c;进行分析 保存修改到文件。 重新打开文件&#xff0c;我们发现没有Nag窗口。 再次使用OD进行附加进行分析。…

项目中遇到的问题总结(四)

GateWay和Nginx的相同点和不同点在哪里&#xff1f; Gateway 和 Nginx 都是常见的反向代理服务器&#xff0c;它们的相同点和不同点如下&#xff1a; 相同点&#xff1a; 都可以作为反向代理服务器&#xff0c;接收来自客户端的请求并转发到后端服务器进行处理。 都支持负载均…

67、C#调用Visual Studio 2019生成的Paddle+OCR(使用ncnn库),去完成业务任务

基本思想&#xff1a;这里使用飞哥写的android代码&#xff0c;将其取出纯c代码逻辑&#xff0c;自己尝试转了paddleocr模型&#xff0c;可以成功转换&#xff0c;不在详细阐述生成ncnn模型的过程和写后处理ocr识别过程&#xff0c;这里要实现的目的是使用c#调用ncnn的ocr工程&…

Ps修改文字

第一步&#xff1a;打开ps软件&#xff0c;选择菜单栏“文件”中的“打开”选项。 第二步&#xff1a;在弹出的“打开”对话框中&#xff0c;选择一张需要修改文字的图片&#xff0c;单击“打开”按钮。 第三步&#xff1a;在左侧工具栏中&#xff0c;选择“仿制图章工具”。 第…

【Python 随练】输出 9*9 口诀

题目&#xff1a; 输出 9*9 口诀 简介&#xff1a; 在本篇博客中&#xff0c;我们将使用 Python 代码输出 9*9 口诀表。口诀表是一个常见的数学乘法表格&#xff0c;用于展示从 1 到 9 的乘法结果。我们将给出问题的解析&#xff0c;并提供一个完整的代码示例来生成这个口诀…