![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题笔记
文章平均质量分 83
阿特!?
这个作者很懒,什么都没留下…
展开
-
Python函数笔记
直接string[::-1]原创 2023-10-04 19:21:48 · 57 阅读 · 0 评论 -
各部分总结
基础知识复习:列表(list)和元组(tuple)比较相似,它们都按顺序保存元素,所有的元素占用一块连续的内存,每个元素都有自己的索引,因此列表和元组的元素都可以通过索引(index)来访问。如果键不在字典中,想要自己设置返回值,可以这样处理,例如dict.get(‘键’,‘never’),键在字典中,则返回键对应的值,键不在字典中,则返回never。python字典的get方法会返回指定键的值,dict.get(‘键’),返回“键”对应的“值”,如果键不在字典中则返回默认值None。频繁查询,较少增删。原创 2023-09-24 20:49:35 · 78 阅读 · 0 评论 -
序列个人总结规律
这个反而是最长连续的,连续的话这个也是以结尾的形式去定义dp的,所以他也应该设置一个result,接下来的问题都会具有两种情况,也就是相等与不相等,而且这个是二维的,二维的一把是选取i-1和j-1去进行比较。这种和上面的差不多,也都是以结尾的形式去定义dp的,这里唯一的区别就是,这个是连续的,所以不用去和范围内里的所有去比较,只要比前一个大,就行了。这个不是连续的,这个是子序列,这道题定义dp的时候是按区间定义的,所以不需要用result。结尾-----结尾--结尾--------范围。原创 2023-07-09 18:08:29 · 38 阅读 · 0 评论 -
背包问题注意事项
初始化问题的话,主要是非0下标又讲究:讲究就在于它在取最大或者最小的时候,要使初始化的东西不能被取到:就比如说求取最大价值的时候,如果价值为负值,那么非0下标就应该取负无穷,当取最小价值的时候,价值为正的时候,那么非0下标就应该取正无穷。求组合和求排列的区别:正常的都是求组合(因为正常的都是求取能装多少最多价值,所以它是不关注物品的顺序的)求取排列的话循环就要先循环背包再循环物品(注意的是先循环背包的话,它是从头开始,这就导致循环内容就需要有一个if条件,也就是背包容量要大于物品重量)原创 2023-07-20 20:41:42 · 59 阅读 · 0 评论 -
单调栈最后两个题规律总结
接雨水这道题它双指针方法和单调栈方法的计算方法是不一样的,也就是计算思想,双指针方法是按列计算的(即求出高以后,只计算一个单位的水面积,一个单位也就是按照一行来算),而单调栈是按照行来计算的(即求出高的方法和双指针一样,但是它的宽是就不是一个单位了,是一段距离,这样就形成了按行计算)。接雨水中的计算的中心柱,它是不包含首尾的,也就是说它计算的时候中心柱没有首尾这种可能,只计算中间的,这也符合接雨水这道题的实际应用情况。因为求雨水的时候肯定是不用考虑首尾作为中心柱的情况的。原创 2023-07-10 21:14:48 · 36 阅读 · 0 评论 -
Day-23
请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。本题使用单调栈的解法。时间复杂度为O(n)。原创 2023-06-05 17:10:57 · 138 阅读 · 0 评论 -
Day-22
t[j - 1]),此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];其实这里大家可以发现和1143.最长公共子序列的递推公式基本那就是一样的,区别就是 本题 如果删元素一定是字符串t,而 1143.最长公共子序列 是两个字符串都可以删元素。3.dp数组如何初始化。原创 2023-06-01 22:33:40 · 61 阅读 · 0 评论 -
Day-21
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。原创 2023-05-30 21:46:03 · 93 阅读 · 0 评论 -
Day-20
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。原创 2023-05-29 11:47:34 · 122 阅读 · 0 评论 -
Day-19
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。输入:[2,7,4,1,8,1]输出:1。原创 2023-05-25 21:52:44 · 131 阅读 · 0 评论 -
Day-18
给出一个区间的集合,请合并所有重叠的区间。示例 1:示例 2:单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例 1:示例 2:示例 3:说明: N 是在 [0, 10^9] 范围内的一个整数。监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树原创 2023-04-28 23:03:43 · 71 阅读 · 0 评论 -
Day-17
局部最优推出全局最优,找不出反例,试试贪心!原创 2023-04-25 21:05:26 · 133 阅读 · 0 评论 -
Day-16
贪心没套路,就刷题而言,如果感觉好像局部最优可以推出全局最优,然后想不到反例,那就试一试贪心吧!原创 2023-04-24 21:47:36 · 77 阅读 · 0 评论 -
Day-15
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。理解自增子序列的概念,这题就和子集II不一样了,自增子序列是 子序列而且递增,并且他们顺序不能变,也就是例如[4, 7,6, 7]这种,[4, 6,7, 7]并不是,因为他跟换了元素的位置顺序。所以这道题不能够类似子集II那样去重。原创 2023-04-24 10:12:25 · 56 阅读 · 0 评论 -
Day-14
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组合。最后本题和39.组合总和要求一样,解集不能包含重复的组合。。都知道组合问题可以抽象为树形结构,那么“使用过”在这个树形结构上是有两个维度的,一个维度是同一树枝上使用过,一个维度是同一树层上使用过。原创 2023-04-20 19:45:39 · 86 阅读 · 0 评论 -
Day-13
,是的,我指的是所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集合中递归查找子集,。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。回溯法模版。原创 2023-04-19 21:18:09 · 88 阅读 · 0 评论 -
Day-12
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。例如:给定 BST [1,null,2,2],返回[2].提示:如果众数超过1个,不需考虑输出顺序。原创 2023-04-13 19:13:27 · 65 阅读 · 0 评论 -
Day-11
根据一棵树的中序遍历与后序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。例如,给出说到一层一层切割,就应该想到了递归。来看一下一共分几步:第一步:如果数组大小为零的话,说明是空节点了。第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)第五步:切割后序数组,切成后序左数组和后序右数组第六步:递归处理左区间和右区间。原创 2023-04-12 21:31:10 · 45 阅读 · 0 评论 -
Day-10
给定一个二叉树,检查它是否是镜像对称的。原创 2023-04-11 20:52:49 · 55 阅读 · 0 评论 -
Day-9
如何标记呢,这种方法也可以叫做标记法。可以看出我们将访问的节点直接加入到栈中,但如果是处理的节点则后面放入一个空节点, 这样只有空节点弹出的时候,才将下一个节点放进结果集。原创 2023-04-10 18:59:22 · 66 阅读 · 0 评论 -
Day-8
python字典的get方法会返回指定键的值,dict.get(‘键’),返回“键”对应的“值”,如果键不在字典中则返回默认值None。如果键不在字典中,想要自己设置返回值,可以这样处理,例如dict.get(‘键’,‘never’),键在字典中,则返回键对应的值,键不在字典中,则返回never。python字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。返回值:返回可遍历的(键, 值) 元组数组。print( "字典值 :",dict.items())原创 2023-04-10 10:37:26 · 130 阅读 · 0 评论 -
Day-7
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。由于栈结构的特殊性,非常适合做对称匹配类的题目。先来分析一下 这里有三种不匹配的情况,1.第一种情况,字符串里左方向的括号多余了 ,所以不匹配。2.第二种情况,括号没有多余,但是括号的类型没有匹配上。3.第三种情况,字符串里右方向的括号多余了,所以不匹配。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。原创 2023-04-04 20:08:08 · 254 阅读 · 0 评论 -
Day-6
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose"限制:1 <= k < s.length <= 10000具体步骤为:实现 strStr() 现 strStr原创 2023-04-03 21:31:44 · 134 阅读 · 0 评论 -
Day-5
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?请你找出所有满足条件且不重复的三元组。答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]原创 2023-03-28 21:53:58 · 168 阅读 · 0 评论 -
Day-4
题意: 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。:不允许修改给定的链表。可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。假设从头结点到环形入口节点 的节点数为x。原创 2023-03-27 21:13:09 · 95 阅读 · 0 评论 -
Day-3
题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL这里面应该先移动pre 再移动cur首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。然后就要开始反转了,首先要把 cur->next 节点用tmp指针保存一下,也就是保存一下这个节点。为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。原创 2023-03-23 21:53:05 · 49 阅读 · 0 评论 -
Day-2
数组是存放在连续内存空间上的相同类型数据的集合数组可以方便的通过下标索引的方式获取到下标下对应的数据数组下标都是从0开始的数组内存空间的地址是连续的因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。数组的元素是不能删的,只能覆盖链表理论基础什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。原创 2023-03-23 16:24:21 · 50 阅读 · 0 评论 -
Day-1
Day-1原创 2023-03-21 20:43:10 · 52 阅读 · 0 评论