自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 代码随想录 - Day38 - 贪心算法

先写了一下暴力法,通过 35/40 ,python用暴力法就比较慢了,会超时,得换别的方法。思路还蛮好想,但是感觉我这种做法有点复杂,每变换一次都要。找了个测试实习,通勤时间加起来快四小时,实在没空写题。绝对值排序后,从后往前,遇到负数就变成正数,注意。之前上班摸鱼做了道跳跃游戏Ⅱ,在就没有进度了。这个方法比我一开始想的简洁许多,不用再频繁。一下,复杂度应该会很高。实现按照绝对值大小排序。

2023-09-25 00:03:06 131

原创 代码随想录 - Day37 - 贪心算法

要注意,数组中每个元素代表的是从该位置可以跳跃的的最大长度,而不是必须跳这个长度。看了一下题解,他是直接在遍历的过程中求差值+比较,我是先统一求差值,再进行比较。本来想用数组记录具有最大和的连续子数组,后面发现遇到只有负数的情况就行不通。不拘泥每次跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的。第二种方法是动态规划,目前暂时看不懂,后面做到动态规划题再说。下午去看看宣讲会,晚上有空再看别的题,没空就这样了。此时就是把利润分解为每天为单位的维度,而不是从。最后将所有的正利润加起来就可以了。

2023-09-13 21:14:22 191

原创 代码随想录 - Day36 - 贪心算法

原来if后面跟着的判断语句先后顺序也会影响代码运行情况。提不起精神,做一道题算了。

2023-09-11 22:32:16 187

原创 贪心算法 - 一点了解

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。

2023-09-10 23:52:59 1173

原创 代码随想录 - Day35 - 回溯:重新安排行程,棋盘问题

本题中棋盘的每一个位置都要放一个数字(而N皇后是一行只放一个皇后),并检查数字是否合法,解数独的树形结构要比N皇后更宽更深。递归的下一层的棋盘一定比上一层的棋盘多一个数,等数填满了棋盘自然就终止(填满当然好了,说明找到结果了),所以不需要终止条件!一个for循环遍历棋盘的行,一个for循环遍历棋盘的列,一行一列确定下来之后,递归遍历这个位置放9个数字的可能性!找到问题了,因为字符串不能直接修改,所以只好用切片的方式修改,这样才能正常运行,并得到正确结果。即[JFK,SFO,ATL,JFK,ATL,SFO]

2023-09-08 17:30:46 153

原创 代码随想录 - Day34 - 回溯:递增子序列+排列问题

感觉今天这几道题思路好想,代码不好写,总会在一些细节上出错,需要多练习。但是,个人觉得没必要,因为放在实际情况中一般不会给数值范围。题目说了数值范围,所以还可以用哈希表去重,速度比。中的所有整数互不相同,因此无需考虑去重。这种题就要考虑新的问题了,即它每次的。都是固定的,遇到取过的数时则需要跳过。考虑跳过用过的数时,脑子里第一反应是。,却忘记了用更为简单的数组也可以…相较于上一题,需要考虑去重的问题,以及,mermaid画图好麻烦。如果有相等的整数也算递增序列。算作两种排列,所以这道题的。

2023-09-07 20:03:48 184

原创 代码随想录 - Day33 - 回溯:切割问题,子集问题

今天的最后一道题,明明不难,但是由于傻乎乎的复制了上一题的代码改了改就提交了,错了好几次,最后才注意到两道题函数名不一样。横向遍历遇到不是回文串的情况,则直接跳到下一个(for循环内需要先判断回文串,再进行递归).要注意的点很多,我在自己想的时候就漏掉了段位里有非正整数字符不合法的情况。灰色框表示非回文串,遇到不是回文串的情况,不再继续向下遍历.上面那种写法我能理解,但是和我自己的思路还是不太一样。总的来说,这道题思路还算好想,但是代码不是很好写。分隔开,再拼成一个完整的字符串。截取103<=255。

2023-09-06 17:37:21 96

原创 代码随想录 - Day32 - 回溯:组合问题

想到了怎么剪枝但是代码一直写不到一块,看了题解才知道应该写到 for 循环里。虚线的部分是没有遍历的,画出来只是为了更方便理解。今天第二道题用了好长时间,这种题怎么能是中等?中的元素可以重复,重复元素会出现相同。从图中可以直观的看出,要去重的是。,而不是同一树枝上相同的元素的。中的值也会跟着一起发生改变。和前面遍历过的path重复了。去重,不走这块,直接跳过。[1,1,2]中取一个数。在[1,2]中取一个数。continue跳过。

2023-09-03 17:33:26 164

原创 代码随想录 - Day31 - 回溯:组合问题

做了这几道题后,发现它们的解题代码都有共通之处,于是自己总结了一下。def __init__(): # 需要的时候才写# 定义全局变量def backtracking(self, 参数1, 参数2, ...):# 回溯算法if 相等:returnfor ...:# 回溯代码self.backtracking() # 递归# 回溯代码# 排除某些情况self.backtracking() # 递归。

2023-09-02 15:47:49 228

原创 回溯搜索法

回溯法也叫回溯搜索法,是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。就像是,递归到最底之后还要返回上一级,回溯就是返回的过程。比如1->2->3,递归看完1,看完2,看完3之后,要返回到2的位置,返回的过程就相当于回溯的过程。

2023-09-01 11:08:26 306

原创 代码随想录 - Day30 - 修剪二叉树,转换二叉树 + 二叉树总结

二叉树这块的题目大部分可以通过递归和迭代两种方式来解决。当遇到二叉搜索树时,可以利用其特性来简化代码。涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。二叉树的遍历方式(递归和迭代)+层序遍历,必须要掌握。要知道深度优先(前中后序遍历)和广度优先(层序遍历)对应哪些遍历方式。关键是要掌握解决问题的方法,熟悉代码,理解题目。

2023-09-01 10:11:06 75

原创 代码随想录 - Day29 - 最近公共祖先,插入操作,删除操作

其实不管插入拿个数值,都可以不改变树的结构,直接插入到空节点处。(不理解的话可以自己画图试一试)所以写代码的时候就可以利用二叉搜索树的特点,根据其特点找到合适的空节点处进行插入操作。这道题不是很好理解,后续应该多看看多理解理解,掌握第一种递归方法即可。迭代法:需要记录一下当前遍历的节点的父节点,这样才能做插入节点的操作。普通二叉树的删除方式:遍历整棵树,用交换值的操作来删除目标节点。自底向上查找:后序遍历(左右中)+回溯。,那么后面就只需要写。

2023-08-31 15:17:41 40

原创 代码随想录 - Day28 - 二叉搜索树

思路1:使用中序遍历,将二叉搜索树转为一个数组,那么这个数组一定是升序的,如果不是,那肯定不是二叉搜索树。左子树所有结点的值都小于根节点,右子树所有节点的值都大于根节点,左右子树也是二叉搜索树。层序遍历,遇到和val相同的节点时,返回该节点即为返回以该节点为根节点的子树。做题时应当注意特殊的二叉树,比如可以利用二叉搜索树的特性写出更简便的解法。*注意不能简单的比较 左节点小于中间节点,右节点大于中间节点,要比较的是。二叉搜索树的节点是有序的,因此不需要回溯过程,也不需要遍历整棵树。根据二叉搜索树的特性,

2023-08-29 11:26:15 70

原创 代码随想录 - Day27 - 构造二叉树

前序和后序不可以唯一确定一棵二叉树!因为没有中序遍历无法确定左右部分,也就是无法分割。前序和中序可以唯一确定一棵二叉树。后序和中序可以唯一确定一棵二叉树。递归:前中后序都可以。

2023-08-29 08:35:10 52

原创 代码随想录 - Day26 - 左叶子之和,找树左下角的值,路径总和

左叶子的明确定义:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点。

2023-08-27 20:10:20 40

原创 代码随想录 - Day25 - 二叉树的所有路径

要传入根节点,记录每一条路径的path,和存放结果集的result,不需要返回值。除了模拟递归需要一个栈,还需要一个栈来存放对应的遍历路径。迭代法:使用前序遍历的迭代方式来模拟遍历路径的过程。返回一个与传入可迭代对象大小一样的 map 对象。当节点不为空但左右孩子为空时,终止递归。

2023-08-17 23:29:05 42

原创 代码随想录 - Day24 - 完全二叉树,平衡二叉树

迭代:用栈模拟后序遍历找每一个节点的高度。重点掌握递归法,迭代理解即可。递归:比较高度,后序遍历。

2023-08-14 22:31:15 42

原创 代码随想录 - Day23 - 二叉树最大深度&最小深度

【代码】代码随想录 - Day23 - 二叉树最大深度&最小深度。

2023-08-13 22:28:34 40

原创 代码随想录 - Day22 - 对称二叉树

要比较的是根节点下的两个子树,比较参数为左右子树的节点,返回值为True或False。单层递归的逻辑就是处理 左右节点都不为空,且数值相同的情况。确定递归函数的参数和返回值。

2023-08-11 23:28:34 63

原创 代码随想录 - Day21 - 翻转二叉树

针对二叉树的问题,解题之前一定要想清楚究竟是前中后序遍历,还是层序遍历。二叉树解题的大忌就是自己稀里糊涂的过了,但不知道自己是怎么遍历的。

2023-08-10 21:41:37 58

原创 代码随想录 - Day20 - 二叉树

做层序遍历的时候没有看递归法,只看了基础的模板层序遍历比较好理解,多敲一敲,手熟了就写的快了相关题目基本是在原代码基础上修改即可做出来。

2023-08-04 23:31:01 43

转载 代码随想录 - Day19 - 二叉树

如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。满二叉树除了满足普通二叉树的性质,还具有以下性质:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~2(h-1) 个节点。前面介绍的满二叉树和完全二叉树都没有数值,而二叉搜索树是有数值的,是一个有序树。平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一

2023-07-30 19:00:17 110

原创 代码随想录 - Day18 - 栈与队列

求滑动窗口最大值使用到了单调队列设计单调队列的时候,pop,和push操作要保持如下规则:pop(value):如果窗口移除的元素value等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作push(value):如果push的元素value大于入口元素的数值,那么就将队列出口的元素弹出,直到push元素的数值小于等于队列入口元素的数值为止保持如上规则,每次窗口移动的时候,只要问que.front()就可以返回当前窗口的最大值。前K个高频元素使用了优先级队列优先级队列本质是堆。

2023-07-28 21:26:44 51

原创 代码随想录 - Day17 - 栈与队列

要注意判断无效括号都有哪些情况,不要漏掉;画图理解更好理解一点。

2023-07-27 19:05:26 46

原创 代码随想录 - Day16 - 双指针法

strip()用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列法1法2画图理解能好想一点本来想试试不用虚拟头结点,但最终发现如果不用虚拟头结点,就无法处理的情况三数之和是以0为标准,四数之和要考虑到target不确定,所以判断条件要改,要注意target。

2023-07-23 23:51:31 107

原创 代码随想录 - Day15 - 双指针法

最左和最右交换位置,直到在中间会和后停止交换,返回反转后的字符串。用双指针法做题(部分为以前做过的题目)做法二,用到了双指针。

2023-07-22 00:07:42 92

原创 代码随想录 - Day14 - 字符串

字符串是若干字符组成的有限序列,也可以理解为是一个字符数组。

2023-07-21 17:21:46 123

原创 代码随想录 - Day13 - 字符串

KMP,看懂了是什么,但不明白为什么这样可以找…如果不能申请额外空间,只能在本串上操作。脑子里第一个冒出来的做法:双重循环遍历。第三步:反转整个字符串得到。KMP算法(很复杂就是了)很好想,但是暴力解法。

2023-07-04 14:45:30 54

原创 代码随想录 - Day12 - 反转字符串

其实一开始有想到双指针,但感觉太麻烦于是没有考虑,有空再看。先把字符串转为列表,排除特殊情况。遍历字符串,遇到空格就替换为。

2023-07-03 21:50:09 132 1

原创 代码随想录 - Day11 - 哈希表

如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。

2023-06-20 16:39:33 161 1

原创 代码随想录 - Day10 - 哈希表

哈希表用来快速判断一个元素是否出现集合里常见的三种哈希结构:数组Python 中使用list()数组的大小是受限的,要根据题目选择是否使用数组题目没有限制数值的大小,就无法使用数组来做哈希表举例:建一个哈希表存储不同字母出现的次数:s = 'abcd' l = [ 0 ] * 26 for i in s : l [ ord(i) - ord('a') ] += 1set(集合)Python 中使用set()使用set()后会去掉重复元素,若题目要求数据不要重复,考虑使用set()

2023-05-17 11:50:08 86

原创 代码随想录 - Day9 - 哈希表

看题解之后秒懂,想找出循环就用哈希表记录一下,加一个判断条件。因为一个考试失利所以荒废了快一个月时间,重新开始继续做题吧。然后每增加一个字母,就去掉最前面的字母,自己写的代码,没考虑到无限循环,没想到啊。自我感觉逻辑没问题,意料之中的超时了。时则把起始下标保存到。两两组合求解,解法与。

2023-05-14 17:39:39 61

原创 Golang基础学习

💡。

2023-05-14 10:27:42 68

原创 代码随想录 - Day8 - 哈希表

绕了一下,不过整体还是简单的。

2023-05-14 10:20:24 65

原创 代码随想录 - Day7 - 链表

一整个数学推导,代码随想录讲的很清楚。最后用快慢指针来做就好了。

2023-04-06 23:12:17 158

原创 代码随想录 - Day6 - 链表

周六复习面试,周一面试,周二一天课(本来半天课结果下午突然加就业指导课 = = 无语)fast 比 slow 先走 n + 1 步之后,两个再同时开始移动。所以先求出两个链表的长度,再求出两个链表长度的差值,然后让。建一个虚拟头结点,然后根据画图的步骤,写出循环内容就完事了。明天还有面试,哭泣,甚至不想面了,反正没什么通过的希望…注意理解题意,两个链表从后往前是一样的(如果有相交部分)建虚拟头结点,再用两个指针(?今天就先到这里吧,去复习一下面试题 ┭┮﹏┭┮。,此时再通过slow来删除链表中节点。

2023-04-05 22:06:35 68

原创 代码随想录 - Day5 - 链表

照着代码随想录底下的python代码示例便理解边照着敲了一遍。补充一下完整的python代码吧,以后复习的时候方便看。单链表和双链表的,就先不照着敲了,直接copy过来。怎么写完总是忘记发出来…用了虚拟头结点的方法。链表好难写┭┮﹏┭┮。

2023-04-02 09:12:35 86

原创 Day4 螺旋矩阵

今天算是给自己放了个小假hhh(但还是恬不知耻地把这当Day4了。晚上把昨天没看明白的螺旋矩阵又看了看,终于把边界自己弄出来了。人麻了,真的挺容易把边界判断错的。自己写了一下昨天没写出来的。

2023-03-31 23:43:29 90

原创 代码随想录 - Day3 - 滑动窗口 + 螺旋矩阵转圈

数组部分竟然到此为止就结束了,才三天时间hhh今天这部分有点难,还没理解透,所以就先不往后做了,今天剩下时间把转圈这种题和其他不熟练的地方再看一看,明天开始做下一部分(但明天课好多估计做不了几道题)

2023-03-30 18:29:03 107

原创 代码随想录 - Day2 - 双指针 / 快慢指针 + 滑动窗口

快慢指针问题,和上一篇结尾的属于同一类题。自己写出来了代码且一次性通过,好耶!看到题就有思路了,依旧是快慢指针,结果写代码的时候因为一个小问题卡了半天,最后终于想到解决方法…解决方法很简单,只是一开始钻牛角尖了,不然早该想到了用了双指针…某种程度上算是快慢指针吧。这题好像和前面的题型都没啥联系(?可能双指针法会快一点吧?看leetcode执行用时也没上面的解法快啊,内存消耗还比上面的多。。。暴力解法:O(n + nlog n)双指针解法:O(n)

2023-03-30 15:37:57 76

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除