草庐IT

LeetCode刷题之树

全部标签

(图论) 1020. 飞地的数量 ——【Leetcode每日一题】

❓1020.飞地的数量难度:中等给你一个大小为mxn的二进制矩阵grid,其中0表示一个海洋单元格、1表示一个陆地单元格。一次移动是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过grid的边界。返回网格中无法在任意次数的移动中离开网格边界的陆地单元格的数量。示例1:输入:grid=[[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]输出:3解释:有三个1被0包围。一个1没有被包围,因为它在边界上。示例2:输入:grid=[[0,1,1,0],[0,0,1,0],[0,0,1,0],[0,0,0,0]]输出:0解释:所有1都在边界上或可以到达边

《LeetCode》——LeetCode刷题日记

本期,将给大家带来的是关于 LeetCode的关于二叉树的题目讲解。目录(一)606.根据二叉树创建字符串💥题意分析 💥解题思路(二)102.二叉树的层序遍历💥题意分析💥解题思路(三)236.二叉树的最近公共祖先 💥题意分析💥解题思路(一)606.根据二叉树创建字符串首先,第一道题是关于二叉树创建字符串的题,接下来我将一步步的分析带大家理解这道题!题目如下:👇输入:root=[1,2,3,4]输出:"1(2(4))(3)"解释:初步转化后得到"1(2(4)())(3()())",但省略所有不必要的空括号对后,字符串应该是"1(2(4))(3)"。 输入:root=[1,2,3,null,4]输

链表oj题2(Leetcode)(牛客)——合并两个有序链表;判断回文链表;链表分割

链表oj题2(Leetcode)(牛客)一,合并两个有序链表1.1分析2.2代码二,链表的回文结构2.1分析2.2代码三,链表分割3.1分析3.2代码四,小结一,合并两个有序链表合并两个有序链表(力扣)1.1分析这里合并两个链表,我们首先想到的思路就是构建一个新的链表,然后比较两个链表的val值的大小依次插入新链表,这里我们还需要注意几个细节如果其中一个链表是空的那那么我们直接返回另外一个非空的链表我们在比较插入的时候用的是while循环条件就是两个链表都不为空,那么如果一个链表已经结束了,那么我们再后面应该再把另外一条链表插入完。还有一些细节我在我的代码注释中有做标注。2.2代码tructL

LeetCode #1348 Tweet Counts Per Frequency 推文计数

1348TweetCountsPerFrequency推文计数Description:Asocialmediacompanyistryingtomonitoractivityontheirsitebyanalyzingthenumberoftweetsthatoccurinselectperiodsoftime.Theseperiodscanbepartitionedintosmallertimechunksbasedonacertainfrequency(everyminute,hour,orday).Forexample,theperiod[10,10000](inseconds)woul

OJ刷题---[算法课动态规划]走网格(C++完整代码)

题目:m行n列的网格,从左上角(1,1)出发,每一步只能向下或者向右,问共有多少种方法可以走到右下角(m,n);输入:输入参数mn(1输出:输出多少种走法比如:输入:23输出:3输入:55输出:70完整代码(C++):#includeusingnamespacestd;intsum(intm,intn){ inttotal; if(m==1||n==1) { return1; } if(m==2&&n==2) { return2; } returnsum(m-1,n)+sum(m,n-1);}intmain(){ intm,n; cin>>m; cin>>n; inttotal; tota

力扣刷题笔记-06 N字形变换

06N字形变换不要混日子,小心日子把你混了对于题目的理解比如说,我给一个字符串,LEETCODE,行数为3,然后按照N字形排列,就是下面这个排列方式。排列完之后正常读取,结果就是LCETOEED。这叫做N字形变换。这个例子里给的行数就是3,往下排三行,然后往右往上走。chatGPT思路边界情况/特殊情况:就给一行,或者给的行数和字符串的长度是一样的,那么就直接返回原来的字符串创建一个长度为numRows的字符数组rows,用于存储每行的字符。。。没抄完,但是我已经理解了。我的理解:准备一个数组,类型是StringBuilder,StringBuilder[]rows=newStringBuil

五道LeetCode《中等难度》的单链表题

五道单链表中等难度题型1.剑指OfferII021.删除链表的倒数第n个结点第一种解法(单指针):第二种解法(栈):第三种解法(双指针):2.删除排序链表中的重复元素II(重点)普通状态特殊状态(头结点重复时)特殊状态(删除尾结点时)3.删除链表中的节点4.重排链表思路一:思路二(寻找链表中点+链表逆序+合并链表)5.剑指OfferII077.链表排序(重点!)1.剑指OfferII021.删除链表的倒数第n个结点题目描述:找到链表的倒数第n个结点,并删除该结点三种解法:第一种解法(单指针):1.遍历链表,求出链表长度L2.链表长度L减去n,就是倒数第n个结点3.找到倒数第n个结点的前驱结点,

leetcode(力扣):203移除链表元素 leetcode(力扣):206反转链表 leetcode(力扣):876.链表的中间结点多种解法

目录203.移除链表元素解法一:将目标元素前一个元素存放地址改为下一元素地址解法二:遍历原链表,把不是val的节点拿出来进行尾插到新链表​编辑解法三:有哨兵位解法->头节点不存储有效数据​编辑206.反转链表方法一:创建新指针​编辑方法一:创建新指针进行反转​编辑方法二:将指针方向颠倒​编辑876.链表的中间结点203.移除链表元素解法一:将目标元素前一个元素存放地址改为下一元素地址structListNode*removeElements(structListNode*head,intval){ structListNode*prev=NULL; structListNode*cur=hea

Leetcode392. 判断子序列

力扣(LeetCode)官网-全球极客挚爱的技术成长平台给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:输入:s="abc",t="ahbgdc"输出:true示例2:输入:s="axc",t="ahbgdc"输出:false 解题思路:力扣(LeetCode)官网-全球极客挚爱的技术成长平台双指针代码如下:classSolution{publicbooleanisSubsequence(Strings,Stri

【刷题】2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差-C语言网(dotcpp.com) 初步想法,x=y2 −z2=(y+z)(y-z)即x=a*b,a=y+z,b=y-z2y=a+b即a+b是2的倍数就好了。即x存在两个因数之和为偶数就能满足条件。但时间是(r-l)*x,数据1e9,直接T了#includeusingnamespacestd;constintN=1e5+10;mapmp;intcnt;booljudge(intx){ for(inti=1;i>l>>r; for(inti=l;i运行结果:进一步分析:根据题意多写几个,不难发现奇数似乎都能拆成y2 −z2的形式?因此,我们从奇偶的角度来