leetcode学习记录篇
IMMUNIZE
immunize yourself!
展开
-
20221114:链表专题回顾 01
链表类题目的python实现原创 2022-11-15 00:05:45 · 345 阅读 · 1 评论 -
20220307:力扣第283场周赛(上)
力扣第283场周赛(上)题目思路与算法代码实现写在最后题目Excel 表中某个范围内的单元格向数组中追加 K 个整数思路与算法第一题直接模拟即可,注意作为char的数字也是可以直接自加运算的。第二题贪心题,也可以利用set的去重特性来做,当然直接排序贪心模拟也是没有问题的。注意书写细节即可。代码实现Excel 表中某个范围内的单元格class Solution {public: vector<string> cellsInRan原创 2022-03-07 23:55:53 · 264 阅读 · 0 评论 -
20220228:力扣第282场周赛(下)
力扣第282场周赛(下)题目思路与算法代码实现写在最后题目完成旅途的最少时间完成比赛的最少时间思路与算法完成旅途的最少时间: 二分模板题,注意初始化左右边界的话,速度会提升很多。完成比赛的最少时间:线性dp,简单来讲这题的思路就是如此,注意一下中间的写法,注意细节,python的使用不够熟练,这道用回cpp。代码实现完成旅途的最少时间class Solution: def minimumTime(self, time: Lis原创 2022-02-28 22:40:00 · 656 阅读 · 0 评论 -
20220227:力扣第282场周赛(上)
力扣第282场周赛(上)题目思路与算法代码实现写在最后题目统计包含给定前缀的字符串使两字符串互为字母异位词的最少步骤数思路与算法第二题直接并集减去交集,简单的集合运算,当然也可以换CPP使用map来处理,但后续可能会使用到Python,那么接下来一周全部使用python来解题。代码实现统计包含给定前缀的字符串class Solution {public: int prefixCount(vector<string>& word原创 2022-02-27 23:53:16 · 6672 阅读 · 0 评论 -
20220219:力扣第72场双周赛题解
力扣第72场双周赛题目思路与算法代码实现写在最后题目统计数组中相等且可以被整除的数对找到和为给定整数的三个连续整数拆分成最多数目的偶整数之和统计数组中好三元组数目思路与算法前三题都是简单的模拟即可。第四题考察树状数组的问题,简单的模板题。这周双周赛略水了。代码实现统计数组中相等且可以被整除的数对class Solution {public: int countPairs(vector<int>&原创 2022-02-20 00:54:21 · 369 阅读 · 1 评论 -
20220213:力扣第280场周赛(上)
力扣第280场周赛(上)题目思路与算法代码实现写在最后题目得到 0 的操作数使数组变成交替数组的最少操作数思路与算法简单模拟即可,所谓辗转相除法哈希处理,然后找到最大和次大值即可。代码实现得到 0 的操作数class Solution {public: int countOperations(int num1, int num2) { int count=0; while(num1>0&&原创 2022-02-13 23:54:59 · 304 阅读 · 0 评论 -
20220212:力扣第277场周赛(下)
力扣第277场周赛(上)题目思路与算法代码实现写在最后题目找出数组中的所有孤独数字基于陈述统计最多好人数思路与算法找出数组中的所有孤独数字按照题意模拟即可,使用map来统计即可。基于陈述统计最多好人数这个题目有点超纲了,看一眼题目看不太懂,看了 @灵茶山艾府 大佬的二进制位运算解法,自叹不如,极其精妙的解法,代码引用学习一下。这个goto的用法真是神乎其技了。代码实现找出数组中的所有孤独数字class Solution {publ原创 2022-02-12 00:14:27 · 301 阅读 · 0 评论 -
20220123:力扣第277场周赛(上)
力扣第277场周赛(上)题目思路与算法代码实现写在最后题目元素计数按符号重排数组思路与算法元素计数按符号重排数组无需多言,直接按照题目实现就行了,过于敷衍了这两个题,简单记录一下。代码实现元素计数class Solution {public: int countElements(vector<int>& nums) { int res = 0; int maxVar =原创 2022-01-24 01:00:22 · 395 阅读 · 0 评论 -
20220104:力扣第274场周赛(下)
力扣第274场周赛(下)题目思路与算法代码实现写在最后题目摧毁小行星参加会议的最多员工数思路与算法第3题简单模拟即可,注意使用long long格式进行保存累加结果。有二元组的简单比较处理方式,但是暴力的复杂度也只有nlogN,不计较。第4题主要问题在于找到数组中的环,并且计算环的长度。很好理解,一桌必须有两个人互相喜欢,然后旁边跟着喜欢这两个人的一个爱慕链。即A和B互相喜欢,然后有D喜欢C,C喜欢B。然后F喜欢E,E喜欢A。这样类似的链,这些人才能坐一起。否则就如第一原创 2022-01-04 23:27:36 · 394 阅读 · 0 评论 -
20220103:力扣第274场周赛(上)
力扣第274场周赛(上)题目思路与算法代码实现写在最后题目检查是否所有 A 都在 B 之前银行中的激光束数量思路与算法前两道都是简单的模拟,注意特殊情况的处理即可。第二个就是简单的相乘再累加即可,注意全0字符串的处理。代码实现检查是否所有 A 都在 B 之前class Solution {public: bool checkString(string s) { int j = 0; for (int i = 0; i <原创 2022-01-03 23:09:36 · 3488 阅读 · 0 评论 -
20211205:力扣第270场周赛(上)
力扣第270场周赛(上)题目思路与算法代码实现写在最后题目找出 3 位偶数删除链表的中间节点思路与算法找出 3 位偶数:遍历所有数字得到3位数字,前导不为0即表示大于等于100,先用set存这些数字去重,再用vector来存排序即可。删除链表的中间节点:典型链表删除节点题目,链表不具有随机存取的特性,快慢指针是很常见的套路,快指针一次走两步,慢指针走一步,快指针走到尾节点或者尾节点的后接nullptr节点时慢指针刚好在中间,维护慢指针的pre指针用于删除即可原创 2021-12-05 23:38:28 · 225 阅读 · 0 评论 -
20211202:力扣第268周周赛(下)
力扣第268周周赛(下)题目思路与算法代码实现写在最后题目区间内查询数字的频率k 镜像数字的和思路与算法第三题直接map加二分即可,见代码这个第四题看了大家的题解有直接打表的,这题本意应该不是这个意思,三个基本题目的综合体,也不怎么复杂,主要逻辑即可。代码实现区间内查询数字的频率class RangeFreqQuery {public: unordered_map<int,vector<int>> res;pu原创 2021-12-02 23:46:26 · 108 阅读 · 0 评论 -
20211201:力扣第268周双周赛(上)
力扣第268周双周赛(上)题目思路与算法代码实现写在最后题目两栋颜色不同且距离最远的房子给植物浇水思路与算法双指针遍历即可,维护那个索引最大差值即可。模拟题,正常情况需要每次走一步即可灌溉,碰到水不够的情况需要灌满水回到原地的步数,维护这个步数,注意索引不要越界。最后一步只需要考虑灌满,不需要考虑需不需要回去装满水。代码实现两栋颜色不同且距离最远的房子class Solution {public: int maxDistance(vecto原创 2021-12-02 00:31:15 · 133 阅读 · 0 评论 -
20211130:力扣第267周周赛(下)
力扣第267周周赛(下)题目思路与算法代码实现写在最后题目2075 解码斜向换位密码2076.处理含限制条件的好友请求思路与算法第三题是一个比较简单的索引计算题,只需要将斜着放的字符先顺着找回来拼接起来,再做去空格处理,最后输出即可。用栈也行,用vector也行,用str也行,用str现成的函数操作起来比较方便。并查集配合哈希表维护即可,比较复杂,只附代码。代码实现2075 解码斜向换位密码class Solution {public: string d原创 2021-12-01 00:49:30 · 388 阅读 · 0 评论 -
20211118:力扣第267周周赛(上)
力扣第267周周赛(上)题目思路与算法代码实现写在最后题目买票需要的时间反转偶数长度组的节点思路与算法买票需要的时间处理思路:直接进行模拟即可,找到位置k上的人需要买的票的数量,排在他之前的人至少要买跟他同样数量的票,排在他后面的人至少需要买比他的票少一张的数量。注意后者不要搞错就可以解决这道题了。反转偶数长度组的节点这道题容易出问题的点在于如果最后剩余的节点数量为偶数,那么不管前面这一组节点是否为偶数,最后一组都要进行翻转,在206题翻转链表的基础上做原创 2021-11-18 23:31:26 · 467 阅读 · 0 评论 -
20211027:《Labuladong的算法小抄》学习记录(一)
力扣第226周周赛(上)题目思路与算法代码实现写在最后题目思路与算法代码实现写在最后原创 2021-10-28 01:07:43 · 382 阅读 · 0 评论 -
20210627:力扣第247周周赛(上)
力扣第247周周赛(上)题目思路与算法代码实现写在最后题目两个数对之间的最大乘积差循环轮转矩阵思路与算法两个数对之间的最大乘积差:排序相减即可循环轮转矩阵:模拟即可,注意逆时针和顺时针的区别。代码实现两个数对之间的最大乘积差class Solution {public: int maxProductDifference(vector<int>& nums) { sort(nums.begi原创 2021-06-27 16:53:04 · 98 阅读 · 0 评论 -
(补)20210623:力扣第246周周赛(下)
力扣第246周周赛(下)题目思路与算法代码实现写在最后题目统计子岛屿查询差绝对值的最小值思路与算法统计子岛屿 : 老DFS了,总之就是遍历题,无需多言,搜就行了。查询差绝对值的最小值:暴力明显会TLE的题目,考虑从首元素到当前元素的区间内各个数字出现的次数,即前缀和思想。之后再遍历一遍存在的数字之间的最小差值即可。代码实现统计子岛屿class Solution { int[] dx = {0, 1, 0, -1};原创 2021-06-25 00:22:26 · 119 阅读 · 1 评论 -
20210621:力扣第246周周赛(上)
力扣第246周周赛(上)题目思路与算法代码实现写在最后题目字符串中的最大奇数你完成的完整对局数思路与算法字符串中的最大奇数 :从末尾开始找奇数即可。从头开始算则最大你完成的完整对局数:注意“取整”的处理和通宵的处理即可。代码实现字符串中的最大奇数class Solution {public: string largestOddNumber(string num) { int len = num.length(原创 2021-06-21 23:49:57 · 108 阅读 · 0 评论 -
20210612:力扣第244周周赛题解(上)
力扣第244周周赛(上)题目思路与算法代码实现写在最后题目判断矩阵经轮转后是否一致使数组元素相等的减少操作次数思路与算法判断矩阵经轮转后是否一致:本题的前置题目是这道46:.旋转图像,在此基础上熟悉旋转后的位置定位原理即可。注意原地改变,不增加空间复杂度。使数组元素相等的减少操作次数:类似于爬楼梯,升序排列,再依次记录阶梯的阶数,每次计算累加的阶数。核心思想为,楼梯要一步一步下。代码实现判断矩阵经轮转后是否一致class Soluti原创 2021-06-12 22:23:12 · 110 阅读 · 1 评论 -
20210602:力扣第243周周赛(下)
力扣第243周周赛(下)题目思路与算法代码实现写在最后题目使用服务器处理任务准时抵达会议现场的最小跳过休息次数思路与算法使用服务器处理任务:典型双堆问题,逻辑清晰即可写出代码,今天两题使用Java来写准时抵达会议现场的最小跳过休息次数:不太经典的dp,注意动态转移方程的分析过程,代码中需要注意浮点运算不要超出范围。其余的正常书写即可。代码实现使用服务器处理任务class Solution { // int数组:0存放索引,1存原创 2021-06-03 01:45:37 · 77 阅读 · 1 评论 -
20210601:力扣第243周周赛(上)
力扣第243周周赛(上)题目思路与算法代码实现写在最后题目检查某单词是否等于两单词之和插入后的最大值思路与算法检查某单词是否等于两单词之和:直接转化比较即可插入后的最大值:负数,则从左到右找到第一个比x大的位置插入即可,正数相反,找到第一个比x小的位置插入,注意字符串和数字的转换。代码实现检查某单词是否等于两单词之和class Solution {public: bool isSumEqual(string firstWor原创 2021-06-02 02:03:33 · 204 阅读 · 0 评论 -
20210530:力扣第53场双周赛题解
力扣第53场双周赛题解题目思路与算法代码实现写在最后题目长度为三且各字符不同的子字符串数组中最大数对和的最小值矩阵中最大的三个菱形和思路与算法长度为三且各字符不同的子字符串:遍历查找符合条件的好子字符串,计数即可数组中最大数对和的最小值:最大的数和最小的中和,排序后掐头去尾找最小值即可矩阵中最大的三个菱形和:枚举不越界的菱形和即可,注意边界条件限制,以菱形的最高点进行扩展。代码实现长度为三且各字符不同的子字符串class原创 2021-05-30 23:37:38 · 173 阅读 · 1 评论 -
20210503:力扣第239周周赛题解
力扣第239周周赛题目思路与算法代码实现写在最后题目到目标元素的最小距离将字符串拆分为递减的连续值邻位交换的最小次数思路与算法到目标元素的最小距离:直接遍历,维护结果就行。将字符串拆分为递减的连续值:遍历操作,用到一个dfs的递归形式,注意数据大小需要用long 来存放。邻位交换的最小次数:本题很好理解,我们先找到第k个最小秒数,再进行遍历比较,中途维护ans即可。代码实现到目标元素的最小距离class Solu原创 2021-05-04 01:49:02 · 345 阅读 · 0 评论 -
20210501:字符串与哈希表力扣专题学习记录
字符串与哈希表力扣专题学习记录题目思路与算法代码实现写在最后题目字母异位词分组无重复字符的最长子串重复的DNA序列最小覆盖子串思路与算法字母异位词分组 : 按照字母序排序后再映射即可无重复字符的最长子串:标准滑窗+HashSet或者HashMap实现。重复的DNA序列:同上,滑窗加HashMap实现。最小覆盖子串:滑窗加HashMap实现,区别在于使用几个map来完成映射。代码实现字母异位词分组原创 2021-05-02 00:40:58 · 221 阅读 · 1 评论 -
20210427:力扣第238周周赛(下)
力扣第238周周赛(下)题目思路与算法代码实现写在最后题目所有元音按顺序排布的最长子字符串最高建筑高度思路与算法依旧是滑动窗口,再熟悉滑动窗口的写法即可。不加解释,本题参考零神专业题解,不属于我们日常练习的范围,略。代码实现所有元音按顺序排布的最长子字符串class Solution {public: int longestBeautifulSubstring(string word) { vector&l原创 2021-04-28 01:30:16 · 240 阅读 · 0 评论 -
20210426:力扣第238周周赛(上)
力扣第238周周赛(上)题目思路与算法代码实现写在最后题目K 进制表示下的各位数字总和最高频元素的频数思路与算法第一题是数学题,考察各进制与十进制数的相互转换,不多赘述,连续取余求和即为答案。k次操作机会,操作只能加一,排序后进行滑动窗口的实现即可。判断标准即为当前k次操作是否可以将前面所有较小的数字增加至和当前窗口右侧持平。(滑动窗口写法和二分法实现,都是很经典很常用的方法,务必熟练)。注意数据量比较大,使用long long类型比较省事。代码实现K 进制原创 2021-04-26 21:04:02 · 160 阅读 · 0 评论 -
20210424:力扣第237周周赛(下)
力扣第237周周赛(下)题目思路与算法代码实现写在最后题目单线程 CPU所有数对按位与结果的异或和思路与算法第一题属于一类cpu流水线题目,实现常规方法堆加排序即可。第二题属于数学题了,证明略,用的时候再查也行。代码实现单线程 CPU// 本题我愿称之为CPU流水线题目class Task {public: int index; int start_time; int last_time; Task(int x,i原创 2021-04-25 01:26:53 · 82 阅读 · 0 评论 -
20210422:力扣第237周周赛题解记录(上)
力扣第237周周赛(上)题目思路与算法代码实现写在最后题目判断句子是否为全字母句雪糕的最大数量思路与算法没什么需要解释的,这周这两题过于水了。。。代码实现判断句子是否为全字母句class Solution {public: bool checkIfPangram(string sentence) { if (sentence.size() < 26) { return false;原创 2021-04-23 01:18:26 · 164 阅读 · 0 评论 -
20210408:力扣(二分查找法的两种写法以及变体题目)
二分查找法的两种写法以及变体题目写在前面题目思路与算法代码实现写在最后写在前面关于二分查找,真的是一个非常实用的查找算法,主要有两种写法,今天在总结时再次碰到,再次整理,方便后续查看复习。这两种写法分别是递归式写法和循环式写法。递归式写法// 从已排序数组sorted_arr中寻找target,找到则返回truebool binary_search(vector<int> & sorted_arr,int begin,int end,int target) {原创 2021-04-08 23:55:37 · 260 阅读 · 0 评论 -
20210330:二叉树力扣相关习题复习(上)
20210330:二叉树力扣相关习题复习(上)题目思路与算法代码实现写在最后题目路径总和 II二叉树的最近公共祖先二叉树展开为链表思路与算法路径总和 II:经典三序遍历二叉树题目,需要保存路径,熟悉流程二叉树的最近公共祖先:变相的求路径的题目,巩固遍历的技巧,最后只需要从短的路径头开始同步遍历即可,相同的路径会不断覆盖res直至最近公共祖先节点。二叉树展开为链表:时间原因,投机取巧使用了vector保存前序遍历的路径,再进行相邻节点的连原创 2021-03-31 00:09:04 · 95 阅读 · 0 评论 -
20210322 :贪心思想力扣典型题目合集
贪心思想力扣典型题目合集写在前面题目列表思路分析代码实现写在前面贪心的思想很多时候在于想到那个贪心的点上,而对徒手书写某些代码结构的能力并不做要求,个人认为需要的是你敏锐的意识到这个贪心的点在哪里。列举出这几道典型题目作为回顾与复习。题目列表分发饼干2. 376. 摆动序列3. 402. 移掉K位数字4. 55. 跳跃游戏5. 45. 跳跃游戏 II6. 452. 用最少数量的箭引爆气球不直观,给个更直观的图:思路分析分发饼干:贪心点在于:尽可能小的原创 2021-03-22 22:59:58 · 94 阅读 · 0 评论 -
20210314:力扣第 232 场周赛
力扣第 232 场周赛题目思路与算法代码实现写在最后题目仅执行一次字符串交换能否使两个字符串相等找出星型图的中心节点最大平均通过率好子数组的最大分数思路与算法仅执行一次字符串交换能否使两个字符串相等翻译题目即可找出星型图的中心节点关键在于清楚这个中心点出现的次数刚好就是点数-1最大平均通过率优先队列存所有的最大通过率,注意加一个同学到一个班里的通过率提升最大,再加就会减少通过率,因此每次只能加1个,按顺序一个一个加才行。好子数组的最大分数贪心,尽可能原创 2021-03-15 00:50:20 · 273 阅读 · 1 评论 -
20210307:力扣第231周周赛(上)
力扣第231周周赛(上)题目思路与算法代码实现写在最后题目检查二进制字符串字段构成特定和需要添加的最少元素思路与算法题意读懂即可,意思是包含01序列与否,单独的一个1也符合要求第二题注意goal的范围,用double或者long都行,但是如果用double需要用fabs来操作,不用double就需要向上取整的技巧,ceil天花板函数针对的是float类型的数,对整型无法操作,会持续报错。注意这些细节。代码实现检查二进制字符串字段class Solut原创 2021-03-07 23:26:16 · 70 阅读 · 0 评论 -
20210224:力扣第229周周赛
力扣第229周周赛题目思路与算法代码实现写在最后题目交替合并字符串移动所有球到每个盒子所需的最小操作数执行乘法运算的最大分数由子序列构造的最长回文串的长度思路与算法前两题不再多说,翻译题意即可第三题的误区在于我上图红色标出的地方,第三个示例在第三部计算的时候并没有选择更大的-3 1,而是选择了-33,因此想到不能直接进行模拟,需要考虑最大值之间的匹配问题,才可以得到最大的结果。想到使用动态规划来实现,具体状态转移过程以及思路见注释。第四题是之前原创 2021-02-24 20:30:38 · 96 阅读 · 0 评论 -
20210218:力扣第228周周赛(下)
力扣第228周周赛(下)题目思路与算法代码实现写在最后题目袋子里最少数目的球一个图中连通三元组的最小度数思路与算法经典二分搜索题目,套模板,主要搞清楚如何检查遍历的每一个数是否符合不大于maxOperations即可。貌似可以直接暴力结束,直接统计是否连接和出入度即可。题目给了n的上限是400,典型的3次复杂度的极限值。也间接说明可以暴力检索三元组。代码实现袋子里最少数目的球class Solution { public int minimumS原创 2021-02-21 00:12:46 · 93 阅读 · 0 评论 -
20210217:力扣第228周周赛(上)
力扣第228周周赛(上)题目思路与算法代码实现写在最后题目生成交替二进制字符串的最少操作数统计同构子字符串的数目思路与算法第一题需要注意不能直接翻译题意,直接翻译的代码存在先入为主定第一个字符为0或者为1的谬误,即第一个字符有可能才是那个需要改变的,因此改变思路统计该字符到底是010101还是101010,取较小的返回即可。第二题使用双指针来操作即可,即所谓的滑动窗口,每次移动之后确定当前需要加入res的计数结果,记得要将每次加了res的值整体取模再返回res进行累计,原创 2021-02-17 23:52:24 · 77 阅读 · 0 评论 -
20210201:力扣第226周周赛(上)
力扣第226周周赛(上)题目思路与算法代码实现写在最后题目盒子中小球的最大数量2. 1743. 从相邻元素对还原数组思路与算法第一题简单的数数问题,python比较方便,使用str函数将数字转化为字符,然后直接累加比较即可。注意括号别写乱了第二题为翻译题,不用花里胡哨的东西,直接翻译题意即可代码实现盒子中小球的最大数量class Solution: def countBalls(self, lowLimit: int, highLimit: int)原创 2021-02-01 22:42:24 · 117 阅读 · 0 评论 -
20210119:力扣第42周双周赛(下)
力扣第42周双周赛(下)题目思路与算法代码实现写在最后题目修改后的最大二进制字符串得到连续 K 个 1 的最少相邻交换次数思路与算法修改后的最大二进制字符串 这道题的思路很简单,交换0和1的位置,找到规律即可。规则为:10 - 01 00 - 10,那么根据下面几个示例我们就可以拿到规律了。00010 - 11010 - 11001 - 11101 也就是010 - 101000111 - 110111 - 110111 后面部分全为1的话则不需要原创 2021-01-19 22:28:14 · 206 阅读 · 0 评论 -
20210101:力扣第42周双周赛(上)
力扣第42周双周赛(上)题目思路与算法代码实现写在最后题目无法吃午餐的学生数量平均等待时间思路与算法无法吃午餐的学生数量本题直接暴力模拟也没问题,但是这应该不是题目的本意,我们可以将排队的同学想象为两个队列,一队都喜欢圆形三明治,一队都喜欢方形三明治,本题的关键三明治是栈顶的三明治,换句话说理解为一个脾气很大的老板,他每次做一个三明治,如果队列的同学都不喜欢,那么他就不做了下班。所以只需要根据遍历老板做出的三明治的队列即可,直到做出一个圆形三明治,但排圆形三明治的原创 2021-01-01 23:20:58 · 211 阅读 · 0 评论