![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
名之以父
阿里云专家博主,华为云云享专家。学过Java,Python,最终发现自己喜欢前端,热爱前端,乐于分享前端知识,无论是基础知识的总结还是刷题,框架等等都会涉及
来自EPI软件实验室
展开
-
深度优先搜索(四):相同的树(力扣)
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false...原创 2022-05-01 11:15:00 · 191 阅读 · 0 评论 -
深度优先搜索(三):恢复二叉搜索树(力扣)
一、题目描述给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 的左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [3,1,4,null,null,2]输出:[2,1,4,null,null,3]解释:2 不能...原创 2022-04-24 20:01:11 · 798 阅读 · 2 评论 -
深度优先搜索(二):验证二叉搜索树(力扣)
一、题目描述给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。提示:树原创 2022-04-23 23:07:52 · 512 阅读 · 1 评论 -
深度优先搜索(一):二叉树的中序遍历(力扣)
一、定义按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。由此可知,二叉树的中序遍历适用递归方法二、例题:给定一个二叉树的根节点 root ,返回 它的中序遍历 。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]三、解析1、准备工作先写..原创 2022-04-21 21:27:42 · 153 阅读 · 1 评论 -
二分查找(折半查找)——c语言实现
背景:二分查找(binarySearch)二分查找法,又叫做折半查找法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。就用刚刚的数组来说,我们想寻找'7',很简单我们先用7和数组中间的数来比较大小,很明显7大于,所以我们缩小范围,从中间的右边开始继续取中间值,继续寻找,直到找到位置,这样一看找的次数少了很多,而且速度也快了不少。方法:确定数组的大小 设置左右边界left,right 根据两边界,确定一个中间变量mid,mid原创 2022-04-19 10:27:57 · 863 阅读 · 2 评论 -
追查车号、搬砖问题
追查车号题目内容:一辆卡车违反交通规则,撞人逃逸。现场三人目击事件,但都没有记住车号,只记下车的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的;丙是位数学家,他说:四位的车号正好是一个整数的平方。请根据以上线索求出车号。输出格式:The number is ****. 这个输出最后有个句号,需要注意,不能在细节上翻车了。。。(就这个句号,我反复提交,修改了好多次。。。无语了,最后才发现是这个小问题,大家一定要注意哦,慧眼识题)#include&..原创 2022-04-10 23:39:26 · 2525 阅读 · 1 评论 -
c语言---图形打印
题目内容:编写程序,打印以下图形(行n的值由键盘输入)。 ******* ****** ***** **** *** ** *输入样例:4输出样例:**** ...原创 2022-04-08 23:47:38 · 7222 阅读 · 2 评论 -
最长回文串
题目描述给定一个包含大写字母和小写字母的字符串s,返回通过这些字母构造成的 最长的回文串。在构造过程中,请注意 区分大小写 。比如"Aa"不能当做一个回文字符串。示例 1:输入:s = "abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。示例 2:输入:s = "a"输入:1示例 3:输入:s = "bb"输入: 2提示:1 <= s.length <= 20...原创 2022-04-06 10:34:56 · 489 阅读 · 4 评论 -
用筛法求之N内的素数
时间限制: 1Sec 内存限制: 64MB 提交: 25444 解决: 15094题目描述用筛法求之N内的素数。输入N输出0~N的素数样例输入100样例输出2357111317192329313741434753596167717379838997思路我们可以利用布尔类型数组(默认值是false),现将全部的数默认为true,即初始所有的数均为素数。那么接下来我们只需要判断非素数,将非素数的值改为fal.原创 2022-04-04 21:12:17 · 756 阅读 · 5 评论 -
蛇形矩阵(Java)
题目描述蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。输入本题有多组数据,每组数据由一个正整数N组成。(N不大于100)输出对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。样例输入5样例输出1 3 6 10 152 5 9 144 8 137 1211我们从二维数组的方式看这个矩阵:(找规律)为了实现这个读入方法,我们发现每次读入的数组之间存在一定的..原创 2022-03-22 16:05:12 · 3670 阅读 · 1 评论 -
质因子分解(Java)
本题目要求读入一个大于1的整数,编程将其分解成若干个质因子(素数因子)积的形式。输入格式:大于1的整数一个。输出格式:将输入的正整数分解成若干个质因子积的形式,质因子的出现顺序按从小到大排列。如:40=2*2*2*5;如果整数本身为质数或素数,直接输出,如:13=13。输入样例:12480输出样例:12480=2*2*2*2*2*2*3*5*13import java.util.Scanner;public class Main { pub原创 2022-03-17 16:28:43 · 1509 阅读 · 0 评论 -
图的广度优先搜索(bfs)
图的广度优先搜索(Broad First Search)所谓的深度优先搜索,指的是在搜索时,如果遇到一个结点既有子结点,又有兄弟结点,那么先找兄弟结点,然后找子结点。类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点广度优先遍历算法步骤访问初始结点v并标记结点v为已访问。 结点v入队列 当队列非空时,继续执行,否则算法结束。 出队列,取得队头结点u。 查找结点u的第一个邻接结点w。 若结点u的邻接结点w不存原创 2022-03-21 08:11:40 · 1700 阅读 · 2 评论 -
图的深度优先搜索(dfs)
图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: (1)深度优先遍历(2)广度优先遍历图的深度优先搜索(Depth First Search)指的是在搜索时,如果遇到一个结点既有子结点,又有兄弟结点,那么先找子结点,然后找兄弟结点。深度优先遍历,从初始访问结点出发,初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点, 可以这样理解:每次都在原创 2022-03-20 10:12:32 · 8286 阅读 · 13 评论