这里写目录标题公共子节点采用集合或者哈希采用栈拼接两个字符串差和双指针旋转链表公共子节点例如这样一道题:给定两个链表,找出它们的第一个公共节点。具体的题目描述我们来看看牛客的一道题:这里我们有四种解决办法:采用集合或者哈希思路是这样的,我们先把其中一个链表遍历放入Map中,然后遍历第二个第二个链表与Map中的对比,第一个相同的即为公共节点。publicListNodeFindFirstCommonNode(ListNodepHead1,ListNodepHead2){MapListNode,Integer>map=newHashMap>();while(pHead1!=null){map.pu
目录写在前面:题目:P1162填涂颜色-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:输出格式:输入样例:输出样例:解题思路:代码:AC!!!!!!!!!!写在最后:写在前面:怎么样才能学好一个算法?我个人认为,系统性的刷题尤为重要,所以,为了学好广度优先搜索,为了用好搜索应对蓝桥杯,事不宜迟,我们即刻开始刷题!题目:P1162填涂颜色-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:每组测试数据第一行一个整数 n(1≤n≤30)。接下来 n 行,由 0 和 1 组成的n×n 的方阵。方阵内只有一个闭合圈,圈内至少有一个 0。输出格式:已经
(最下边有完整代码及运行截图,中间部分仅提供思路,有残缺)具体问题如下图所示简单说一下思路首先是常规定义一下单链表#include#includetypedefstructNode{intdata;structNode*next;}Node;然后是将输入的数列存入链表中创建一个head节点,head的指针域设为NULL,并用L指针指向head。建立一个循环:在循环内接收输入的序列值(假设为)[ 12345 -1](用空格隔开),第一次循环,新建一个节点Node,并让L->next(此时L代表head)指向该新建节点Node,形成链表,其中Node数据域data存入1。按此操作依次进行,直到序列
本文涉及知识点深度优先搜索(DFS)状态压缩题目给你一棵树(即,一个连通、无向且无环的图),根节点为0,由编号从0到n-1的n个节点组成。这棵树用一个长度为n、下标从0开始的数组parent表示,其中parent[i]为节点i的父节点,由于节点0为根节点,所以parent[0]==-1。另给你一个长度为n的字符串s,其中s[i]是分配给i和parent[i]之间的边的字符。s[0]可以忽略。找出满足u如果一个字符串正着读和反着读都相同,那么这个字符串就是一个回文。示例1:输入:parent=[-1,0,0,1,1,2],s=“acaabc”输出:8解释:符合题目要求的节点对分别是:(0,1)、
目录1.三元组表1.1三元组表的存储结构1.2基于三元组表的矩阵转置1.3完整实现代码1.4运行结果2.十字链表2.1十字链表的存储结构稀疏矩阵是指矩阵中大多数元素为零的矩阵。从直观上讲,当非零元素个数低于总元素的30%时,这样的矩阵为稀疏矩阵。1.三元组表1.1三元组表的存储结构稀疏矩阵的三元组表表示法是指只存储非零元素,同时存储该非零元素在矩阵中所处的行号和列号的位置信息。为方便处理,将稀疏矩阵中非零元素对应的三元组按“行序为主序”的一维结构体数组进行存放,将矩阵的每一行(行由小到大)的全部非零元素的三元组按列号递增存放,得到矩阵的三元组表。代码#defineMAXSIZE1000
每日OJ题——142.环形链表II(链表)1.题目:142.环形链表II2.方法讲解2.1.解法一:2.1.1.图文解析2.1.2.代码实现2.1.3.提交通过展示2.2解法二:2.2.1图文解析2.2.2代码实现2.2.3.提交通过展示1.题目:142.环形链表II2.方法讲解2.1.解法一:2.1.1.图文解析我们使用两个指针,fast与slow。它们起始都位于链表的头部。随后,slow指针每次向后移动一个位置,而fast指针向后移动两个位置。如果链表中存在环,则fast指针最终将再次与slow指针在环中相遇。如下图所示,设链表中环外部分的长度为a。slow指针进入环后,又走了b的距离与f
文章目录87.扰乱字符串:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:87.扰乱字符串:使用下面描述的算法可以扰乱字符串s得到字符串t:如果字符串的长度为1,算法停止如果字符串的长度>1,执行下述步骤:在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串s,则可以将其分成两个子字符串x和y,且满足s=x+y。随机决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s可能是s=x+y或者s=y+x。在x和y这两个子字符串上继续从步骤1开始递归执行此算法。给你两个长度相等的字符串s1和s2,判断s
目录1、题目介绍2、解题2.1、解题思路 2.2、图解说明 2.3、解题代码1、题目介绍原题链接:11.盛最多水的容器-力扣(LeetCode)输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例2:输入:height=[1,1]输出:1提示:n==height.length202、解题2.1、解题思路这道题最优的方法就是用双指针,我们可以用指针left和指针right分别指向数组height[]的第一个数和最后一个数,然后每次经过比较两个指针指向的数值的大
leetcode格式问题解决一、情景再现二、报错原因三、解决方法四、修正结果一、情景再现二、报错原因该错误是指源程序中有非法字符,需要将非法字符去掉。一般是由于coder1.使用中文输入法或者2.从别的地方直接复制粘贴代码造成的。代码中出现了中文空格,中文引号,各种中文标点符号都会出现,这是复制后leetcode的格式问题,简单修改一下就OK了。三、解决方法(1)把出错行的空格及其前后空格删掉重新打一下,看是否还是出现问题。(2)把明显和其他标点符号颜色不同的改掉。(大部分编译器都有颜色识别)(3)在出现问题的行中,删掉直接全部重打。四、修正结果成功啦>o( ̄▽ ̄)ブ
力扣题目链接:24.两两交换链表中的节点这图还是挺麻烦的,思路不是很难,但是很容易被绕进去。这题一定要用虚拟头节点做,不然很难受。思路:首先定义一个虚拟头节点dummyhead指向头节点head;然后设置一个位置指针cur,令cur=dummyhead。然后我们就可以开始进行交换操作了。进行交换操作,我们需要一个或者两个临时指针。我这里是用了一个,定义一个临时指针temp=cur->next->next;然后开始进行交换操作,注意这里的操作不能更改顺序。第一步,我们可以将cur->next->next=temp->next,在第一次交换的时候就是相当于使第第一个节点的指针域指向第三个节点。注意