
算法学习计划
文章平均质量分 91
从真实算法题出发,研究学习算法的题解方式,相当于学习笔记
蚊子码农
好好吃饭,好好学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法题解记录31+++下一个排列(百题筑基)
我们可以定义这样的概念,最大序列数组。它表示,在一个数组中,从某个下标k开始,后面的所有数字,都是按照从大到小的顺序,进行组合的。比如【1,3,5,4,2】中的数组【5,4,2】或者另外的【1,4,5,3,2】中的【5,3,2】另外,我们定义这个概念,极小数极小数表示,以最大序列数组的前缀数值(即前一个数)为标准,在最大序列数组中,比前缀数大,但是在最大序列数组中最小的数。有了这两个概念,我们就可以解题了。以上内容即我想分享的关于力扣热题31的一些知识。我是蚊子码农。原创 2024-09-01 20:47:33 · 1043 阅读 · 0 评论 -
算法题解记录30+++乘积最大子序列(百题筑基)
我们定义一种概念,用于理解这些数据。累积量:即从下标i到j中,绝对值最大的数。很明显,对于题目数组,累积量最大为原数组(因为没有0,且绝对值都大于等于1),即 -240在一个数组中,从下标0出发,累积量一定越来越大。所以,可以得到累积量数组为这一步比较复杂。理论上,我们可以定义以下标i开始的,最大的子序列。那么,我们同样可以逆转定义,定义以下标i结尾的,最大的子序列。我们设这个值为imax。这里数组内的定义,是指从0开始,到下标i的子数组。原创 2024-08-24 22:46:36 · 1156 阅读 · 0 评论 -
图的基本术语【度数、路径、环】
在经过基础数据结构的学习后,我们知道,图结构是四类基础数据结构之一。事实上,图在现代信息社会中非常常用,比如解决地图、搜索引擎、电路、任务调度、商业交易、计算机网络、社交网络等问题。为了解决这些问题,我们需要提前了解一些图的术语。19个基础的图术语,又可以分为3类。我是蚊子码农,如有补充或者疑问,欢迎在评论区留言。原创 2024-08-03 13:44:09 · 1387 阅读 · 0 评论 -
算法题解记录29+++全排列(百日筑基)
回溯算法详解,算法基础多叉树遍历,解决力扣56题全排列的回溯问题原创 2024-06-17 22:25:03 · 734 阅读 · 0 评论 -
算法题解记录28+++对称二叉树(百日筑基)
以上内容即我想分享的关于力扣热题27的一些知识。我是蚊子码农,如有补充,欢迎在评论区留言。原创 2024-06-16 21:42:42 · 417 阅读 · 0 评论 -
算法题解记录27+++随机链表的复制(百日筑基)
题目难度:中等给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n。原创 2024-06-01 22:44:37 · 941 阅读 · 0 评论 -
算法题解记录26+++翻转二叉树(百日筑基)
题目难度:简单给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。原创 2024-05-17 17:02:40 · 981 阅读 · 0 评论 -
算法题解记录25+++验证二叉搜索树(百日筑基)
难度:中等给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。子树truefalse根节点的值是 5 ,但是右子节点的值是 4。[1, 10^4]原创 2024-05-13 19:03:09 · 701 阅读 · 0 评论 -
算法题解记录24+++二叉树的右视图(百日筑基)
题目难度:中等给定一个二叉树的root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。原创 2024-05-12 14:17:14 · 1019 阅读 · 0 评论 -
算法题解记录23+++最小栈(百日筑基)
题目难度:中等设计一个支持pushpoptop操作,并能在常数时间内检索到最小元素的栈。实现MinStackMinStack()void pop()int top()--> 返回 -3.--> 返回 0.--> 返回 -2.topgetMinpushpoptopgetMin3 * 10^4。原创 2024-05-08 10:45:42 · 1087 阅读 · 0 评论 -
算法题解记录22+++无重复字符的最长子串(百日筑基)
难度:中等给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。1因为无重复字符的最长子串是"b",所以其长度为 1。3因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。原创 2024-04-30 14:33:16 · 438 阅读 · 0 评论 -
算法题解记录21+++打家劫舍(百日筑基)
题目难度:中等你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。[1,2,3,1]4偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。12偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。原创 2024-04-23 18:41:26 · 797 阅读 · 0 评论 -
算法题解记录20+++
难度:简单给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。-1。原创 2024-04-22 13:10:27 · 631 阅读 · 0 评论 -
算法题解记录19+++回文链表(百日筑基)
难度:简单给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。truefalse[1, 10^5]1.回文的概念:回文是指,倒着读和正着读一致的数、字符串或链表,比如:121,"sks","oopoo"2.链表:链表是一种线性结构,和数组类似。二者的本质区别,是链表不拘束于存储区块,其允许“任意存储”。比如:节点a存在地址1,而a的下一个节点b,存储在地址100。原创 2024-04-21 14:02:22 · 696 阅读 · 0 评论 -
算法题解记录18+++搜索二维矩阵Ⅱ
本题可以说是运用二分查找的典例,即使是面对矩阵,只要是它保持“排序好”这样的结构,就一定能采用二分查找法。【你知道的,对于排序好的数组,二分查找几乎是最优秀的算法】当然,答案提供的是“Z字形查找法”【这个概念我搜不到,不过其实质,就是矩阵边界的缩减】“Z字形”排查效率高于二分查找法,只是因为题目结构特殊,一般不会有这种结构。原创 2024-04-20 13:05:19 · 1102 阅读 · 0 评论 -
对线程、进程和Java线程池的理解
人生最大的悲哀,莫过于我本可以。我钻研操作系统,后选修Linux操作系统,做过父进程生子进程的作业,还做过IO多路复用、多线程的网络游戏,自认为对线程、进程的理解颇深。然,多次面试,面对面试官:“你对Java的线程池机制有所了解吗?我不由噤声。面试官再问:“你说一说进程与线程的区别。我更是大惊失色,支支吾吾,拾了一些“进程不共享资源”、“进程对应多个线程”、“线程是执行最小单位”、“一个进程至少一个线程”来答,看着面试官越来越失望的脸色,我自知面试必挂。苦也!原创 2024-04-19 18:54:56 · 932 阅读 · 0 评论 -
算法题解记录17+++完全平方数
这是楼主第一次不靠题解,挑战动态规划的中等题目,虽然最终结果只超过了5%的人,不过我也很满意了。本题楼主首先采用朴素的递归型动态规划,接着优化算法,使用借助HashMap存储临时数据的递归型动态规划,几次时间复杂度都很高,最后优化成借助数组存储数据的迭代型动态规划。原创 2024-04-19 12:15:31 · 1000 阅读 · 0 评论 -
算法题解记录16+++二叉树的直径(百日筑基)
其实题主本人看到这个题是有点懵的。二叉树的直径?又是简单题,不就是左子树深度+右子树深度就行了?【在此,定义根节点深度为0】写了半天,奇怪,计算最大深度我是会了,左右子树最大深度怎么算?接着总算想起用两个变量存储左右子树深度,提交答案,怎么莫名出错?随后注意到:树的直径不一定从根节点通过,这才大悟,可是更懵了,不从根节点通过,一个随机节点怎么找?该怎么解决?后来也是看了题解,理解了一遍。原创 2024-04-18 16:11:31 · 919 阅读 · 1 评论 -
快慢指针:如何判断单链表是否有环
1.链表:本题链表为单链表,链表头节点存在数据,保证无特殊情况。2.父辈节点的定义:对于链表a->b->c->d,如果认为a是b、c、d的父辈(或祖宗辈)节点。3.环:存在一个节点X,它指向其父辈(或祖宗辈)结点,说明有环。【本质就是,有一个节点存在两个前驱节点(当然,如果是头节点,仍是一个,所以这个规律用于判断环时,一致性较差,需要额外讨论)4.环的性质:我们可以发现,一旦链表中存在环,那么链表不会出现一个节点D,其下一个节点为null,也就是D.next!=null。原创 2024-04-18 12:24:32 · 1119 阅读 · 0 评论 -
算法题解记录15+++两数相加(百日筑基)
给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。原创 2024-04-17 18:38:44 · 666 阅读 · 0 评论 -
算法题解记录14+++二叉树的最大深度(百日筑基)
对于最左链,如果root==null,那么返回0。对于本题,其实同理,因为将左、右结点都传递过去了,不必担心缺少的问题。原创 2024-04-16 15:15:26 · 885 阅读 · 0 评论 -
算法题解记录13+++杨辉三角(百日筑基)
本题是动态规划的问题,我也在此阐述我对动态规划的理解,如有不准确、缺失、错误,敬请斧正。原创 2024-04-16 10:46:49 · 872 阅读 · 0 评论 -
算法题解记录12+++划分字母区间(百日筑基)
本题我首先分享我的思路,再在补充中说明贪心算法。原创 2024-04-15 14:38:13 · 815 阅读 · 0 评论 -
算法题解记录11+++从前序与中序遍历序列构造二叉树(百日筑基)
给定两个整数数组preorder和inorder,其中preorder是二叉树的inorder是同一棵树的,请构造二叉树并返回其根节点。原创 2024-04-14 12:07:43 · 638 阅读 · 0 评论 -
算法题解记录10+++缺失的第一个正数
给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。3范围 [1,2] 中的数字都在数组中。21 在数组中,但 2 没有。1最小的正数 1 没有出现。1.了解基本操作:既然是找到缺失的第一个正数,必然涉及遍历(查找),其它的暂时看不出来。2.模拟操作:随便提供可能的数据,并得到它们的答案,如下图。人眼很快能得到结果,目前看不出步骤。原创 2024-04-13 15:31:55 · 1352 阅读 · 0 评论 -
算法题解记录9+++有效的括号(百日筑基)
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。本题1、2的描述,结合后,我的理解是:左括号右括号必须成对出现,且不允许嵌套。比如:"()[]{}[]"表示正确、但"([)] "表示错误,因为(括号和)括号没连在一起。该题在提交时,有一个用例"([)]"答案为错误,故我在此提示。原创 2024-04-12 11:07:36 · 694 阅读 · 0 评论 -
算法题解记录8+++爬楼梯(百日筑基)
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?n = 22有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶n = 33有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶1.猜测该题可能涉及的基础操作:目前看不出来。2.拿特殊的题目尝试一下:可以发现,第一层台阶非常特殊,虽然题目提供两种操作,但是我们只能爬1步,因此只有1种方案。原创 2024-04-11 15:17:45 · 993 阅读 · 1 评论 -
算法题解记录7+++反转链表(百日筑基)
给你单链表的头节点head,请你反转链表,并返回反转后的链表。原创 2024-04-10 11:44:49 · 876 阅读 · 1 评论 -
算法题解记录6+++相交链表(百日筑基)
的输入如下(你设计的程序。原创 2024-04-09 17:12:32 · 616 阅读 · 0 评论 -
算法题解记录5+++二叉树中序遍历(百日筑基)
给定一个二叉树的根节点root,返回它的遍历。[1,3,2]root = [][]root = [1][1][0, 100]解题准备:其实这道题的代码很简单,可以说是非常基础,但是正因为流传广、基础,很多人都不了解其原理,在此大致解释一下。【本人也是新手】1.了解二叉树:二叉树是树状结构中比较特殊的一种,从根节点看,它有且只有左子树和右子树,从每一个节点看,同样是有且仅有左右子树(左子树为null、右子树为null也看成拥有子树),具有迭代性。原创 2024-04-09 13:01:02 · 726 阅读 · 0 评论 -
算法题解记录4+++螺旋矩阵(百日筑基)
如果是第一层,明显是从0到column-1(列-1),第二层,则为1到column-2(列-2),用代码实现也不难,但是有点复杂,我们既然用left、right界定左右,那么能不能借助left、right呢?上:我们用top界定了行数,top初值为0(对于第一层,这个数为0,第二层,这个数为1,也就是每次遍历一层,都要top+1【遍历结果】),那么只要temp做好即可。由于解题难点分析1已知,对于完整的一层,遍历结果一致,那么,对于残缺的一层,我们的重点应该在于,如何跳出循环?每次结束,top+1。原创 2024-04-07 11:42:12 · 841 阅读 · 0 评论 -
算法题解记录3+++矩阵置零(百日筑基)
给定一个m x n的矩阵,如果一个元素为,则将其所在行和列的所有元素都设为。请使用算法。原创 2024-04-01 15:28:49 · 680 阅读 · 0 评论 -
算法补充+++字母异位词分组
本题其实我在“百日筑基2”已经有过详解,不过由于时间复杂度过高,并没有写出来,在官方题解里想了一阵,在此带来我的学习成果。原创 2024-04-01 11:43:22 · 907 阅读 · 0 评论 -
算法题解记录2+++字母异位词分组(百日筑基)
给你一个字符串数组,请你将组合在一起。可以按任意顺序返回结果列表。是由重新排列源单词的所有字母得到的一个新单词。原创 2024-03-30 10:48:27 · 613 阅读 · 1 评论 -
算法题解记录1+++百日筑基
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2024-03-29 11:37:01 · 963 阅读 · 1 评论