草庐IT

leetcode刷题之回文链表

全部标签

leetcode 572. 另一颗树的子树

这道题重在思路,默认大家会判断两个树是否完全相同我会把一些基础的简单的(包括 判断两个树是否完全相同 和之前的求结点个数)单独出博客,或者放在介绍堆和树的知识点里面572.另一颗树的子树题目给你两棵二叉树root和subRoot。检验root中是否包含和subRoot具有相同结构和节点值的子树。如果存在,返回true;否则,返回false。二叉树tree的一棵子树包括tree的某个节点和这个节点的所有后代节点。tree也可以看做它自身的一棵子树。题目链接力扣(LeetCode)官网-全球极客挚爱的技术成长平台文字和画图分析这里用到的思路其实是判断两棵树是否完全相同的变形知道这一点,整个思路就出

【算法Hot100系列】删除链表的倒数第 N 个结点

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kwan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kafka,Spring,微服务,Netty等常用开发工具系列:罗列常用的开发工具,如IDEA,Mac,Alfred,electerm,Git,typora,apifox等数据库系列:详细总结了常用数据库mysql技术点,以及工作中遇到的mysql问题等懒人运维系列:总结好用的命令,解放双手

链表基础知识(二、双向链表头插、尾插、头删、尾删、查找、删除、插入)

目录一、双向链表的概念二、 双向链表的优缺点分析​与对比 2.1双向链表特点:2.2双链表的优劣:2.3循环链表的优劣2.4 顺序表和双向链表的优缺点分析​三、带头双向循环链表增删改查实现3.1SList.c3.2创建一个新节点、头节点3.3头插3.4尾插3.5头删3.6尾删3.7查找3.8删除3.9插入3.10查找3.11打印链表3.12销毁链表四、简化链表,用插入和删除代替其他插入删除五、SList.h六、Test.c书接上文:链表基础知识(一、单链表、头插、尾插、头删、尾删、查找、删除、插入)-CSDN博客一、双向链表的概念双向链表,即一个节点中有两个指针域,一个存放当前节点前一个节点的

图的存储结构——十字链表

目录引入(为何存在?)数据结构分析十字链表的示意图:代码实现(以有向网为例,创建十字链表)    数据结构部分:    算法实现部分:        测试部分:(以图8.14为例)时间与空间复杂度分析分析:引入(为何存在?)    回忆邻接矩阵与邻接表的存储结构,它们都不便于求顶点的出度与入度(对于每个顶点而言,欲求其出入度,邻接矩阵需要扫描2*n次,而邻接表只易在求解其出度,欲求入度还需重新扫面整张图)。为了解决上述两者求出入度的局限性,在此引入十字链表,它可以看成邻接表与逆邻接表的结合,方便求解顶点出入度与获取顶点的出入度边。数据结构分析    十字链表的存储结构包含表头结点表与弧表,与邻

【刷题篇】动态规划(六)

文章目录1、最大子数组和2、环形子数组的最大和3、乘积最大子数组4、乘积为正数的最长子数组长度5、等差数列划分6、最长湍流子数组1、最大子数组和给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。classSolution{public:intmaxSubArray(vectorint>&nums){intsize=nums.size();vectorint>dp(size+1);intmaxi=-0X3F3F3F3F;for(inti=1;isize;i++){dp[i]=max(nums[i-1],dp[i-1

力扣链表OJ面试题,那些你不懂的全新版本解法

孤独的时候看世界更清晰 前言数据结构的逻辑性是非常强的,所以单单看代码很难搞懂,这里博主对每一道题目都进行了非常细致的图文详解,每一道题目都是非常经典的面试OJ题,每一道题我都附上了对应的力扣链接,本文主要是较为简单的题目,比较难的题目将会在下一篇博客中为大家讲解,希望对大家有所帮助,谢谢!!目录1.移除链表元素 1)总代码2.反转链表 2)总代码3. 链表的中间结点3)总代码 4.链表中倒数第k个结点4)总代码    5. 合并两个有序链表  5)总代码1.移除链表元素题目:删除链表中等于给定值val的所有节点 假设我们要删除val=45的节点,那么我们首先要定义一个prev和cur,让pr

leetcode(平衡二叉树)

https://leetcode.cn/problems/balanced-binary-tree/description/这题的思路分成子问题就是计算左右子树的高度然后相减看看是不是大于1的就可以了,所以代码如下int_isBalanced(structTreeNode*root){if(root==NULL){return0;}intleftdepth=_isBalanced(root->left);intrightdepth=_isBalanced(root->right);returnleftdepth>rightdepth?leftdepth+1:rightdepth+1;}bool

DS作业0-C语言基础知识复习(含指针与链表)

判断题:1.直接访问就是直接利用变量的地址直接进行访问。T2.可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。T3.int(*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。F(是int类型数组,里面有4个指针变量元素)4.结构体变量可以作数组元素。T5.函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值。T6.结构体成员的类型必须是基本数据类型。F(可有指针变量)7.指针数组的每个元素都是一个指针变量。T8.结构体类型本身不占用内存空间,结构体变量占用内存空间。T9.char*s="CLanguage";表示s是一个指向字符串的指针变量,把字符串的首

PTA-数据结构-重排链表(链式存储结构)

一、引言为什么要写这篇博客呢?因为我在网上找不到我想要的答案(也可能只是我没有找到)。这学期开始学习数据结构这门课,第一个需要我们弄透彻的东西就是链表,也就是链式存储结构。PTA上的这道题,如果我仅仅是要完成题目的要求,那么我用四十多行代码就可以完成,唯一的缺点就是没有用到链式存储结构,只完成了题目的输出要求,但其实根本就没有把链表进行重排。现在CSDN上大多数都是用的这种思想,我们抛开数据结构这门课程来看,我用四十多行代码就可以搞定,而且不仅节省空间还快,正所谓大道至简。但是,既然我们是在学习数据结构这门课程,我们就不要偷懒、取巧。题目既然说了用链式的存储结构,那么就一定可以采用链式存储结构

算法leetcode|93. 复原 IP 地址(多语言实现)

文章目录93.复原IP地址:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:93.复原IP地址:有效IP地址正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。例如:"0.1.2.201"和"192.168.1.1"是有效IP地址,但是"0.011.255.245"、"192.168.1.312"和"192.168@1.1"是无效IP地址。给定一个只包含数字的字符串s,用以表示一个IP地址,返回所有可能的有效IP地址,这些地址可以通过在s中插入'.'来形成。你不能重新排序或删除s中的任何数字。你可以按任何顺序返回答