草庐IT

leetcode刷题之回文链表

全部标签

[LeetCode]-283. 移动零-1089. 复写零

目录283.移动零描述 解析代码1089.复写零描述解析代码283.移动零283.移动零https://leetcode.cn/problems/move-zeroes/描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0] 解析利用双指针思想,前指针cur遍历数组,判断nums[cur],找出非0的数,再与后指针dest下标所在的数nums[dest]交换,将数组划分为三块区域

Java LeetCode篇-二叉搜索树经典解法(实现:二叉搜索树的最近公共祖先、根据前序遍历建树等)

🔥博客主页: 【小扳_-CSDN博客】❤感谢大家点赞👍收藏⭐评论✍  文章目录    1.0判断合法        1.1使用遍历方式实现验证二叉搜索树        1.2使用递归方式实现验证二叉搜索树    2.0求范围和    2.1使用非递归实现二叉搜索树的范围和    2.2使用递归方式实现二叉搜索树的范围和    3.0根据前序遍历结果建树        3.1使用非递归实现前序遍历构造二叉搜索树    3.2使用递归实现前序遍历构造二叉搜索树    4.0二叉搜索树的最近祖先        4.1使用遍历方式实现二叉搜索树的最近公共祖先    5.0本篇二叉搜索树实现LeetCo

链表的认识

目录引入:链表的基础概念链表的基本操作查找节点更新节点插入节点删除节点数组和链表引入:前面我们已经讲了重要的一种数据结构——数组,如果说数组是方便读取数据,那么今天所学习的链表便是方便写入数据的数据结构,为什么这么说呢?让我们走进今天的链表学习。首先让我们来看一个最基础的单向链表:由图可见,链表和数组数据结构最主要的区别是链表是单线联络的,就像是工厂的产品,一般都是生产之后,然后交给超市等批发商,最后才能到达消费者的手中,产品的运输,就像是链表。链表的基础概念链表(linkedlist)是一种在物理中非连续 ,非顺序的数据结构,由若干节点(node)所组成。由上图可知,单向链表又包含了两个部分

【滑动窗口】【map】LeetCode:76最小覆盖子串

作者推荐【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值本文涉及的基础知识点C++算法:滑动窗口总结题目给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串“”。注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。如果s中存在这样的子串,我们保证它是唯一的答案。示例1:输入:s=“ADOBECODEBANC”,t=“ABC”输出:“BANC”解释:最小覆盖子串“BANC”包含来自字符串t的‘A’、‘B’和‘C’。示例2:输入:s=“a”,t=“a”输出:“a”解释:整个字符串s是最小覆盖

Leetcode—1572.矩阵对角线元素的和【简单】

2023每日刷题(七十三)Leetcode—1572.矩阵对角线元素的和实现代码classSolution{public:intdiagonalSum(vectorvectorint>>&mat){intn=mat.size();if(n==1){returnmat[0][0];}intsum=0;inti=0,j=n-1;while(in){sum+=mat[i][i]+mat[i][j];i++;j--;}if(n%2){sum-=mat[n/2][n/2];}returnsum;}};运行结果之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次

刷题 ------ 矩阵

文章目录1.岛屿的周长2.重塑矩阵3.图片平滑器4.托普利茨矩阵5.翻转图像6.转置矩阵7.可以被一步捕获的棋子数8.距离顺序排列矩阵单元格方法一:BFS方法二:排序9.二维网格迁移10.找出井字棋的获胜者11.矩阵中战斗力最弱的k行12.统计有序矩阵中的负数(1)暴力(2)二分13.矩阵中的幸运数14.矩阵对角元素的和15.二进制矩阵中的特殊位置(1)暴力(2)模拟16.最富有客户的资产总量17.判断矩阵经轮转后是否一致18.将一维数组转变成二维数组**优化**19.检查是否每一行每一列都包含全部的整数20.判断矩阵是否是一个X矩阵21.矩阵中的局部最大值22.删除每行中的最大值23.对角线

LeetCode74二分搜索优化:二维矩阵中的高效查找策略

题目描述力扣地址给你一个满足下述两条属性的 mxn 整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。示例1:输入:matrix=[[1,3,5,7],[10,11,16,20],[23,30,34,60]],target=3输出:true示例2:输入:matrix=[[1,3,5,7],[10,11,16,20],[23,30,34,60]],target=13输出:false提示:m==matrix.lengthn==matrix[i].len

数据结构:二叉树:第3关:基于二叉链表的二叉树的遍历

任务描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。编程要求输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出三行,为二叉树的先序、中序和后序序列。测试说明平台会对你编写的代码进行测试:测试输入:abcd00e00f00ig00h00abd00e00cf00g000预期输出:abcdefighdcebfagihdecfbghiaabdecfgdbeafcgdebfgca来源BJFUOJ开始你的任务吧,祝你成功!注:从微信或note

【LeetCode刷题笔记(8-1)】【Python】【接雨水】【动态规划】【困难】

文章目录引言接雨水题目描述提示解决方案1:【动态规划】结束语【接雨水】【LeetCode刷题笔记(8-2)】【Python】【接雨水】【单调栈】【困难】【LeetCode刷题笔记(8-3)】【Python】【接雨水】【双指针】【困难】引言编写通过所有测试案例的代码并不简单,通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例,但如果不了解代码背后的思考过程,那么这些代码可能并不容易被理解和接受。我编写刷题笔记的初衷,是希望能够与读者们分享一个完整的代码是如何在逐步的理性思考下形成的。我非常欢迎读者的批评和指正,因为我知道我的观点可能并不完全正确,您的反馈将帮助我不断进步。如果我的笔记

LeetCode994腐烂的橘子(相关话题:矩阵dfs和bfs)

题目描述在给定的 mxn 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,腐烂的橘子 周围 4个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。示例1:输入:grid=[[2,1,1],[1,1,0],[0,1,1]]输出:4示例2:输入:grid=[[2,1,1],[0,1,1],[1,0,1]]输出:-1解释:左下角的橘子(第2行,第0列)永远不会腐烂,因为腐烂只会发生在4个正向上。示例3:输入:grid=[[0,2]]输出:0解释:因为0分钟