- 博客(18)
- 收藏
- 关注
原创 贪心part2 买卖股票的最佳时机 跳跃游戏
分析:依然计算覆盖范围,若不能到达最后一个元素,则选取覆盖范围内的最大覆盖范围。分析:计算覆盖范围,若范围大于最后一个元素的索引,则肯定能成功。分析:计算相邻两天的收益,将正收益相加即为总的最大收益。122.买卖股票的最佳时机II。122.买卖股票的最佳时机II。
2024-05-21 20:16:24 640 1
原创 贪心part 1 分发饼干,摆动序列,最大子序和
分析:优先让大饼干满足大孩子胃口,若当前饼干不能满足当前孩子胃口,就换下一个孩子。关键:只要和出现负数,就重新开始计数。
2024-05-20 22:38:00 598
原创 回溯(组合III,电话号码的字母组合)
分析:此题与力扣77题的区别在于,77题返回1-n中k个数的组合,此题则是在1-9中选择k个数,使其和为n。分析:建立字典,存放电话号码和字符之间的映射关系,采用回溯的方式,挨个遍历。17.电话号码的字母组合。17.电话号码的字母组合。216.组合总和III。
2024-05-14 22:06:04 485 2
原创 代码随想录 二叉树
分析:二叉搜索树的特点,左子树的值小于根节点的值,根节点的值小于右节点的值。235. 二叉搜索树的最近公共祖先。450.删除二叉搜索树中的节点。701.二叉搜索树中的插入操作。分析:一个节点可以是他自己的祖先。
2024-05-10 21:53:29 274
原创 代码随想录 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数
关键:二叉搜索树特点,中序遍历即按照升序排列方法1:遍历二叉树,用数组记录元素,因为数组按升序排列,故计算相邻元素之间的差值即可得到最小的绝对差方法2:遍历过程中,使用两个指针,分别记录当前元素,和当前元素的前一个元素,同时更新结果值,得到最小的绝对差。
2024-05-09 22:08:03 415 1
原创 代码随想录 栈与队列三
关键:维护一个单调队列,若将push进的元素大于队列内所有元素,则将其他元素pop,若将push进的元素比队列首部的元素小,则保存首部的元素,判断其与队列内其他元素的大小关系,pop掉比它小的元素。关键:使用字典存储元素和元素出现的次数,设计一个长度为K的小顶堆,将元素push进小顶堆内,若堆的长度大于k,则将堆顶元素pop出,返回堆内元素。239. 滑动窗口最大值。239. 滑动窗口最大值。347.前 K 个高频元素。
2024-04-29 22:09:23 918
原创 代码随想录 栈与队列 第二天
20.有效的括号题目链接/文章讲解/视频讲解:代码随想录无效的括号有三种情况:1.多左括号,但是无相应的右括号与之匹配2.顺序不匹配3.多右括号,无相应的左括号与之匹配新建一个栈用来存储当前括号的对应括号(此栈仅保存右括号),在push的过程中,若遇到相同的右括号,则将当前右括号弹出栈的情况:1.原字符串已经遍历完毕,但是栈不为空;2.遍历过程中,元素不同(此时栈不为空);3.原字符串未遍历完,栈已经为空。class Solution: def
2024-04-27 19:57:42 421
原创 代码随想录 栈与队列
使用一个队列实现栈,当pop元素时,先将队列中最后一个元素之前的所有元素移除并添加到队尾,再移除第一个元素即可。若要用栈实现队列,需要两个栈,当pop的时候,将一个栈的元素push到另一个栈,然后再pop,即实现队列的。栈: 先进后出 队列:先进先出。225. 用队列实现栈。232.用栈实现队列。232.用栈实现队列。
2024-04-26 23:11:03 401 1
原创 代码随想录 字符串系列
344.反转字符串方法:直接使用库函数reverse;使用双指针;使用切片法541. 反转字符串II关键:每次移动2*k的长度。
2024-04-24 21:21:32 578
原创 代码随想录 454.四数相加II 15三数之和 18 四数之和
方法:先遍历前两个列表,计算元素和,作为字典的key,value表示该和出现的次数,再遍历后两个列表,判断0-(后两个列表的元素和)是否在字典内,若在,则最终返回值加value。方法:三数之和的基础上,嵌套一个for循环,关键在剪枝和去重。方法:双指针法(先保证单调性)+元素去重。454.四数相加II。
2024-04-23 22:54:46 250
原创 代码随想录242.有效的字母异位词 349. 两个数组的交集 1. 两数之和
题目链接/文章讲解/视频讲解:关键:两个字符串中的字母相同349. 两个数组的交集关键:可以使用集合或者数组。
2024-04-22 21:19:10 767
原创 代码随想录算法训练营第四天 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 142.环形链表II
方法2 使用快慢指针,先让快指针移动n+1个节点,然后快慢指针一起移动,直到快指针指向末尾的空节点,此时慢指针指向的即是倒数第n个节点的前一个节点,此时删除倒数第n个节点。思路:快慢指针,若有环,两者定会相遇,此时新建一个变量从头结点开始移动,慢指针接着原链表移动,当两者相遇时,即为入环节点。思路:方法1 先遍历链表获取链表长度,再删除倒数第n个节点。19.删除链表的倒数第N个节点。24. 两两交换链表中的节点。142.环形链表II。思路:使用虚拟头结点。
2024-04-21 21:58:15 242
原创 代码随想录第三天203.移除链表元素 707.设计链表 206.反转链表
方法2 使用双指针,定义一个pre指针将原指针方向转变, 再定义一个变量用来接收原链表的next。重点:使用双指针或者递归(递归不太会,后续再研究一下)重点:使用虚拟头结点,避免处理头结点。方法1 构造一个新的链表。重点:使用虚拟头结点。
2024-04-19 22:23:24 520
原创 代码随想录第二天977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
方法2 滑动窗口 相当于有不同长度的窗口在数组上滑动,要返回满足要求的窗口的最小长度。方法1:暴力解法 两个for循环,遍历所有元素,时间复杂度为O(n**2)数组按照非递减顺序排列,平方后的最大值位于两端,故选用双指针。思路:每条边要用相同的区间,可采用左闭右开,四条边分别处理。方法1:使用sort()函数,直接进行排序。
2024-04-18 22:35:08 427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人