Kevin的算法之路
文章平均质量分 89
Kevin涛
微信公众号:Kevin的学堂
展开
-
LeetCode|从王者荣耀的技能施放理解调度算法
今天是 Kevin 的算法之路的第 74 天。和大家分享《王者荣耀》技能施放的最佳方案,看完之后你将可以完成 LeetCode 的第 621 题《任务调度器》引想必被标题 骗 吸引进来的你对《王者荣耀》应该很熟悉,那么我们先以这个游戏来引出这篇文章。上图中的这个角色知道是谁吧,没错,就是小乔的姐姐——大乔。不认识也没关系,这不是重点。假设你正愉快的玩着这个英雄,现在要求你施放 3 次 A 技能,2 次 B 技能,1 次 C 技能,并且每种技能的冷却时间都是一样的 2 秒,每种技能都可以在 1 秒内原创 2021-01-28 14:09:28 · 593 阅读 · 0 评论 -
LRU 不知道?这个生活实例一定知道吧!
Hello,好久不见。由于各种原因断更了挺久的,在这给等待我更新的小伙伴们说声抱歉!接下来的日子,让我们调整步伐继续向前!今天是 Kevin 的算法之路的第 73 天。和大家分享著名常考的 LRU 算法以及解决 LeetCode 的第 146 题。LRU 算法思想LRU,全称是 Least Recently Used,即最近最少使用。是一种缓存淘汰策略算法。这个算法的思想就是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。所以,当指定的空间已存满数据时,应当把最久没有被原创 2021-01-18 13:48:47 · 448 阅读 · 0 评论 -
图码详解算法|理解八大思想,胜刷百道力扣!
文章首发:微信搜索「Kevin的学堂」零、前言Hello,我是Kevin,之前和大家刷题打卡了很多天,但是发现效果并不理想,于是我在反思,我知道由于我追求数量导致了文章质量不高,另外我只是分享题解并未让大家理解算法的内涵,授之以鱼,不如授之以渔。 比起分享一道道题解,我想分享核心的算法思想应该更为重要。所以,我打算写这篇文章带大家学习算法的思想,领悟“接化发“般的精髓,一起修炼内功,做到无招胜有招!在讲解八大算法思想之前我想先简述以下三个问题,以便大家更好的理解算法。1. 什么是算法?《算法.原创 2020-12-14 09:50:20 · 1823 阅读 · 1 评论 -
我写了个“女朋友”陪自己打麻将……
序一个月黑风高的晚上,我正坐在工位的电脑前精力充沛的疲倦不已的写着bug。突然,一通备注着“小仙女”的电话打了过来,我一看赶紧接通了女朋友的电话。电话那边传来温柔的声音“好无聊呀,过来陪我一起打麻将吧”可是事业心强并且写着bug的我怎么能够去和女朋友打麻将呢?于是在犹豫了一秒之后我便起身而出。见到了可爱的女朋友,我们便兴奋的搓起了麻将。搓了一轮一轮又一轮……可是实在是太困,搓着搓着我竟然睡着了。“涛哥,涛哥,快醒醒~“在同事的呼唤中我揉了揉朦胧的双眼,看着眼前模糊的桌面,转了转脑袋,我这原创 2020-09-29 20:15:05 · 554 阅读 · 0 评论 -
leetcode|面试常客双指针算法题
今天是 Kevin 的算法之路的第 21 天。为大家讲解 LeetCode 第 15 题,正好借昨天讲解的 todo链接 在分享下这道 三数之和。可能有点难度,希望大家能动动聪明的小脑瓜,一起坚持下去~每日一笑如果比我优秀的人不会努力,他们凭什么比我优秀?题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums原创 2020-07-28 17:46:55 · 267 阅读 · 1 评论 -
leetcode|经典力扣第一题
今天是 Kevin 的算法之路的第 20 天。为大家讲解 LeetCode 第 1 题,是一道简单但相当经典的题目。每日一笑玩游戏第一次坑朋友:对不起我不是故意的。第二次坑朋友:emmm第三次坑朋友:嘿嘿嘿第四次坑朋友:你怎么那么坑?题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11,原创 2020-07-28 17:46:14 · 3612 阅读 · 0 评论 -
leetcode|炒股赚大钱之有手续费
今天是 Kevin 的算法之路的第 19 天。为大家讲解 LeetCode 第 714 题,继续为大家带来「买卖股票」系列的一个变种题《买卖股票的最佳时机含手续费》前面已经讲解过几道,不了解的建议先去看看哦leetcode|割韭菜的最佳时机leetcode|割冷冻韭菜的最佳时机leetcode|继续买股票?每日一笑父亲:“你最好把成绩告诉我,如果太差就不要认我这个父亲。”儿子:“你谁啊。”题目描述给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数原创 2020-07-28 17:45:05 · 190 阅读 · 0 评论 -
leetcode|动态规划之简单验收
今天是 Kevin 的算法之路的第 18 天。为大家讲解 LeetCode 第 1480 题,有读者表示最近几题有点难度,今天就来一道简单的缓一缓叭(我当然不会告诉你其实是我时间匆忙姑且水一道简单题 手动狗头 ????每日一笑早起的好处:拥有更多时间,能吃到美味的早饭,头脑清醒,抑郁几率小,改善皮肤,提高免疫力。赖床的好处:爽。题目描述给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和原创 2020-07-28 17:42:34 · 137 阅读 · 0 评论 -
leetcode|继续买股票?
今天是 Kevin 的算法之路的第 17 天。为大家讲解 LeetCode 第 122 题,继续为大家带来「买卖股票」系列的一个提升版《买卖股票的最佳时机 II》。已经写了两篇,建议不了解的朋友先去看看~leetcode|割韭菜的最佳时机leetcode|割冷冻韭菜的最佳时机每日一笑深思熟虑:什么事情都决定不了。抱着‘老子不管了’的心态:能决定任何大事。题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更原创 2020-07-22 19:25:30 · 189 阅读 · 0 评论 -
leetcode|割冷冻韭菜的最佳时机
今天是 Kevin 的算法之路的第 16 天。为大家讲解 LeetCode 第 309 题,是昨天带来的 todo链接 的一个升级版,不了解的朋友建议先去康康。每日一笑“你为什么选择我们公司?”脑子:“因为没钱啊,那你以为呢?”嘴巴:“当然是因为你们公司balabala……”题目描述给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买原创 2020-07-22 19:16:25 · 208 阅读 · 0 评论 -
leetcode|割韭菜的最佳时机
今天是 Kevin 的算法之路的第 15 天。为大家讲解 LeetCode 第 121 题,这周依然为大家继续带来重要的「数组」题目。每日一笑从前有颗草莓,她每天坚持做美容,于是变成了圣女果。从前还有颗草莓,她坚持每天吃垃圾食品不搞卫生,于是变成了荔枝。题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5原创 2020-07-20 20:00:09 · 733 阅读 · 0 评论 -
leetcode|子集复子集,子集何其多
今天是 Kevin 的算法之路的第 14 天。为大家讲解 LeetCode 第 78 题,愉快的周五由一道中等难度的题目结束吧~每日一笑买喜好的东西花了两千后:值了值了。买生活用品花了两百块后:我要破产了。题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]来源:力扣(L原创 2020-07-19 22:14:35 · 191 阅读 · 0 评论 -
leetcode|最短无序连续子数组
今天是 Kevin 的算法之路的第 13 天。为大家讲解 LeetCode 第 581 题,是一道简单的关于「数组」的题目。每日一笑有什么简短有趣的笑话:我的人生。题目描述给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序原创 2020-07-19 22:12:22 · 383 阅读 · 0 评论 -
leetcode|一道简单难度却让我陷入沉思的题目
今天是 Kevin 的算法之路的第 12 天。为大家讲解 LeetCode 第 53 题,继续为大家带来一道常考的数组题目。每日一笑男孩:“我想和你说一件事。”女孩:“说吧。”男孩:“诶,我要说什么来着。”题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(原创 2020-07-19 22:10:03 · 414 阅读 · 0 评论 -
leetcode|一起来寻找失踪的数字
今天是 Kevin 的算法之路的第 11 天。为大家讲解 LeetCode 第 448 题,是一道简单但又值得关注的题目。每日一笑世界上最不可思议的事情:在网络上被杠精骂杠精。在游戏中被傻逼骂傻逼。在现实中被大佬夸大佬。题目描述给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可原创 2020-07-19 22:07:00 · 234 阅读 · 1 评论 -
leetcode|别说你不知道双指针
今天是 Kevin 的算法之路的第 10 天。为大家讲解 LeetCode 第 283 题,是一道常考的双指针应用题,这周计划给大家带来「数组」的面试相关题,数组作为基础且常考的数据结构,有必要重视一下。每日一笑生活百分之八十的痛苦来自工作,但是我知道,我不工作的话,生活百分之百的痛苦来自没钱,所以上班和没钱中间,我选择了工作。题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12原创 2020-07-13 19:55:12 · 147 阅读 · 0 评论 -
leetcode|二叉树的最大深度
今天是 Kevin 的算法之路的第 9 天。为大家讲解 LeetCode 第 104 题,是一道关于二叉树的常考题。每日一笑医生:“医嘱上一天吃一副药,你怎么吃了一周的量?”病人:“我想跟病菌来个出其不意。”题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7原创 2020-07-13 19:51:02 · 213 阅读 · 0 评论 -
【leetcode】合并二叉树
今天是 Kevin 的算法之路的第 7 天。为大家讲解 LeetCode 第 617 题,是一道关于二叉树的简单的题目。每日一笑看隔壁邻居大夏天的也没有空调吹,我就好心的让她来我这边一起。结果她却发现我的房间比她的大,而我们两每月的房租都一样。这下她不开心了,就去找房东理论,要求减房租。商量了许久,两个人最终得出了结论,那就是给我涨房租。题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠原创 2020-07-09 17:37:12 · 174 阅读 · 0 评论 -
leetcode|一道算法题错失谷歌offer
今天是 Kevin 的算法之路的第 8 天。为大家讲解 LeetCode 第 226 题,是一道简单却让大佬 Max Howell(Homebrew 的开发者)错失谷歌的offer的题。让我们一起来了解一下吧~每日一笑小明:“我努力起来自己都怕。”爸爸:“那你努力啊。”小明:“可我怕啊。”题目描述翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2原创 2020-07-09 16:59:54 · 197 阅读 · 0 评论 -
【LeetCode】经典位运算,简单又装逼
今天是 Kevin 的算法之路的第6天。为大家讲解 LeetCode 热门题中的第 461 题,是一道经典的位运算的题,值得了解一波。每日一笑小学有一次写作文,要求展现出真实情感来。我后来就编了个妈妈冒雨去给菜地浇水的故事,将自己都感动得快哭了。结果,作文却不及格。老师给的评语是:“不尊重事实。”后来才发现,下大雨哪里还需要浇水啊。题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y <原创 2020-07-08 17:02:19 · 292 阅读 · 0 评论 -
【LeetCode】一棵树引发的算法题...
今天是 Kevin 的算法之路的第5天。为大家讲解 LeetCode 第 108 题,是一道简单难度的题目。同时今天也是今年高考的第一天,Kevin 在这预祝考生们考试顺利,7开得胜!每日一笑睡觉的时候突然惊醒过来,想起自己的作业还没有写,赶紧匆忙的爬起来找纸笔,找了好一会都没找着,就想起来了,自己已经毕业很久了,哪里还要写作业啊。安心的去睡觉了,早上起来看到桌上的书包,才发现昨天自己是做梦呢。题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树原创 2020-07-08 17:01:22 · 263 阅读 · 0 评论 -
【LeetCode】0307. 区域和检索 - 数组可修改
今天是 Kevin 的算法之路100天征程的第4天。为大家讲解 LeetCode 第 307 题,是一道中等难度的题目,这道题是上一篇的升级版,不了解的可以去看看上一篇。区域和检索 - 数组不可变每日一笑一个人在沙漠里快要饿死了,这时他捡到了神灯。神灯:" 我只可以实现你一个愿望,快说吧,我赶时间。"人: “我要老婆 ……”神灯立刻变出一个美女,然后不屑的说:" 都快饿死了还贪图美色!可悲! “说完就消失了。人:”……饼。 "题目描述给定一个整数数组 nums,求出数组从索引 i原创 2020-07-06 19:33:09 · 276 阅读 · 0 评论 -
【算法】优化算法的常用方法,你不会不知道吧?
今天是 Kevin 的算法之路100天征程的第3天。为大家讲解 LeetCode 第 307 题,是一道简单难度的题目。每日一笑餐馆里一个厨师帮工姓蔡,其他人都习惯喊他小蔡,一天有几个客人来吃饭,还没有点菜就听他们喊:“老板,先上小菜。”结果老板就摇着头看着小蔡战战兢兢地走到这个客人的包间里。题目描述给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求原创 2020-07-03 22:33:06 · 980 阅读 · 0 评论 -
【算法】大厂常喜欢问的算法题
今天是 Kevin 的算法之路的第2天。为大家讲解 LeetCode 第 215 题,是一道中等难度的题目。其中的 Top K 解法大厂很喜欢考查。每日一笑哥们几个逛街,看到电线杆子上有个重金求子的广告,我问旁边的马力:“这些是不是骗人的?”他说:“算你聪明,他们会找你收体检费,看你的基因好不好,还有什么关系费,乱七八糟的费,加起来有6,7万。”我不屑的说:“这么明显的骗局有人上当吗?”他说:“肯定有啊,不然我怎么知道的那么清楚!”题目描述在未排序的数组中找到第 k 个最大的元素。请注意原创 2020-07-02 20:17:18 · 715 阅读 · 0 评论 -
图解:长度最小的子数组(LeetCode209)
种一棵树最好的时间是十年前,其次是现在 ——Dambisa Moyo今天开始记录分享自己的算法学习之路,先定一个小目标,我先写它个100天!虽然我目前的水平和写作都亟待提升,但是一天进步一点点我们就进步巨大!希望我们一起坚持,一起学习,一起更优秀!每日一笑手指骨折去挂骨科。医生:“手指怎么断的?”我说:“我有强迫症。”医生:“你手指断了跟强迫症有什么关系?”我说:“十个手指九个都响,就它不响。”题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和.原创 2020-07-01 23:13:42 · 344 阅读 · 0 评论