目录1、题目介绍2、解题2.1、解题思路 2.2、图解说明2.3、解题代码1、题目介绍原题链接:42.接雨水-力扣(LeetCode)输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下,可以接6个单位的雨水(蓝色部分表示雨水)。示例2:输入:height=[4,2,0,3,2,5]输出:9提示:n==height.length102、解题2.1、解题思路一个用木板围成的桶能装多少水取决于最短的那块木板,同理,这道题我们可以把它看做成是由若干块木板组成的一个桶,只是它们是以并
358.K距离间隔重排字符串解题思路:大根堆+队列,1)首先计数数组统计每个字符出现的次数,然后将 计数>0的 字符和次数一起放入大根堆,大根堆中
2023每日刷题(二十六)Leetcode—103.二叉树的锯齿形层序遍历BFS实现代码/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*//***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbema
《LeetCode力扣练习》代码随想录——数组(螺旋矩阵II—Java)刷题思路来源于代码随想录59.螺旋矩阵II左闭右开——[x,y)classSolution{publicint[][]generateMatrix(intn){if(n==1){returnnewint[][]{{1}};}int[][]result=newint[n][n];intstart=0;introw=-1;intcol=-1;intloop=0;intoffset=1;intcount=1;for(;loop(n/2);loop++){for(col=start;col(n-offset);col++){res
题目描述:给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random-->Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random-->y 。返回复制链表的头节点。
目录160.相交链表 题目思路代码 141.环形链表 题目思路代码142.环形链表II题目思路代码160.相交链表160.相交链表-力扣(LeetCode)https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 题目给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。示例:structLis
题目:求一个3*3矩阵对角线元素之和?程序分析题目要求计算一个3x3矩阵的对角线元素之和,即主对角线和副对角线的元素之和。主对角线的元素位于矩阵的左上到右下的对角线上,副对角线的元素位于矩阵的右上到左下的对角线上。解题思路我们可以使用三种不同的方法来实现这个程序,分别是:直接遍历法:遍历主对角线和副对角线上的元素,并计算其和。矩阵求和法:将矩阵对角线元素之和转化为矩阵的元素求和。索引求和法:利用索引直接访问对角线上的元素,进行求和。方法一:直接遍历法优点:实现简单,直观易懂。缺点:需要显式遍历对角线上的元素。defdiagonal_sum(matrix):diagonal_sum=0forii
目录一、Arraylist的缺陷二、链表 2.1链表的概念和结构 2.2链表的实现三、链表面试题 3.1 删除链表中所有值为val的节点 3.2 反转一个单链表 3.3 链表的中间节点 3.4 将有序链表合并 3.5 输出倒数第k个节点 3.6 链表分割 3.7 链表的回文结构 3.8 找两个链表的公共节点 3.9 判断链表是否有环 3.10 找链表入环的第一个节点四、LinkedList的模拟实现五、LinkedList的使用 5.1什么是LinkedList 5.2LinkedList的使用六、Arr
C++判断一个数是否为回文数的算法回文数是指正序(从左向右)和倒序(从右向左)读都相同的整数。在C++中,我们可以使用算法来判断一个数是否为回文数。下面是一个详细的解释和相应的源代码。算法思路:将给定的整数转换成字符串。使用双指针法来检查字符串的左右字符是否相等。双指针法使用两个指针,一个指向字符串的开头,另一个指向字符串的末尾。我们将它们分别称为left和right指针。在每一步中,我们比较left指针和right指针所指向的字符。如果它们不相等,则该数不是回文数。如果它们相等,则将left指针向右移动一步,同时将right指针向左移动一步,继续比较下一对字符。重复步骤3,直到left指针超
顺序表和链表1.线性表线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表2.1概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:\1.静态顺序表:使用定长数组存储元素。\2.动态顺序表:使用动态开辟的数组存储。2.2接口实现静态顺序表只适用于确定知道