leetcode 题解
文章平均质量分 59
01_
某酒吧舞软件工程硕士在读,将在往后的时间里,发布分享一些,技术上的想法和实践
展开
-
2023.12.3 每日一题 最大点数 很巧秒的做法,数学思维的开拓
然后遍历计算最后一张与第k张的大小(即将假设的最后一张与真实的最后一张进行比较,如果全部都更换了也就回到了上面所说的,每次将头尾俩段较大的取出),然后更新答案。输入:cardPoints = [1,79,80,1,1,1,200,1], k = 3。输入:cardPoints = [1,2,3,4,5,6,1], k = 3。输入:cardPoints = [9,7,7,9,7,7,9], k = 7。解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。原创 2023-12-04 21:41:43 · 298 阅读 · 2 评论 -
leetcode 12.2 每日一题 拼车(近双百解法,绝对通俗易懂)
举例: 负数表示这点没人上车,有下车 注意这里举例有些片面,没有重合点位,但是实际会有,如果不好理解,可以先看代码,然后自己找个重合地点的进行手推,帮助理解。trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,输入:trips = [[2,1,5],[3,3,7]], capacity = 4。输入:trips = [[2,1,5],[3,3,7]], capacity = 5。眼过千遍,不如手敲一遍,大家共勉!原创 2023-12-02 20:09:24 · 575 阅读 · 0 评论 -
力扣 41 42.接雨水问题详细讲解,保证看完必会接雨水问题!!!时间复杂度最优解 o(n)
当是间隔形式时桶底需重新计算(就是高度数组连续,但是实际摆放有间隔,因为咱们是根据数组进行操作,所以此时需要计算桶底长度)若有1 ,则其前后俩数进行判断,如果前后俩数差大于1(注意前一个数是负数的情况需进行判断),则加入比后一个数大1的数。本算法借鉴于力扣灵神思路,进行了整合及解释,更易懂,当然眼看千遍不如手敲一遍,建议大家可以手推一遍更易理解。先对数组排序,便于判断,由于要加入此时所缺最小正整数,1 为最小正整数。输入:nums = [3,4,-1,1]41. 缺失的第一个正数。欢迎大家评论区提问!原创 2023-11-29 21:06:59 · 436 阅读 · 0 评论 -
力扣 39. 组合总和 递归解法
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,2 和 3 可以形成一组候选,2 + 2 + 3 = 7。对于给定的输入,保证和为 target 的不同组合数少于 150 个。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。你可以按 任意顺序 返回这些组合。7 也是一个候选, 7 = 7。原创 2023-11-28 21:11:00 · 185 阅读 · 0 评论 -
leetcode 30,串联所有单词字串,(动态窗口总结)
"abefcd","cdabef", "cdefab","efabcd", 和 "efcdab" 都是串联子串。它是 words 中以 ["bar","foo"] 顺序排列的连接。它是 words 中以 ["foo","bar"] 顺序排列的连接。输入:s = "barfoothefoobarman", words = ["foo","bar"]例如,如果 words = ["ab","cd","ef"], 那么 "abcdef","acdbef" 不是串联子串,因为他不是任何 words 排列的连接。原创 2023-11-20 00:15:53 · 312 阅读 · 1 评论 -
力扣 针对链表反转总结(针对 24 俩俩一组反转链表 25 k个一组反转链表
题解: 我想大多人看到这俩个题第一想法肯定是三指针,不断前进,然后交换,注意这里不是简单的val交换而是,节点的交换,这就意味着需要对前一个节点和后一个节点进行保存交换。接下来就可以考虑优化了,关注题目,交换颠倒,是不是一下子就先到了栈,这个优美的数据结构,那是不是可以先把要颠倒的节点,压入栈内,然后再出栈构成所需要的颠倒链表呢。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。总结:以后面对颠倒,倒置问题,不妨想想那些优美的数据结构,让我们的代码更加优雅!这里先提供这种传统方法的代码。原创 2023-11-15 21:41:12 · 195 阅读 · 0 评论 -
python 实现迪杰斯特拉算法 + 应用 leetcode 题解 阈值距离最小邻居城市
然后再比较(source->next_node 的距离)和(source-> curr + curr -> next_node 的距离).如果大于,那么更新。将 节点 和 到原点的距离信息,存成 list 格式:[节点,到原点距离],然后类似bfs,将它存入大list。题解:循环所有节点,把每一个都当成起点,然后应用 迪杰斯特拉算法,然年选出距离最小的即结果。首先初始化起点到所有点的距离 dist,默认为 inf,然后定义自己到自己距离为 0.的路径的距离等于沿该路径的所有边的权重之和。原创 2023-11-14 14:45:00 · 342 阅读 · 0 评论 -
力扣题解 23 .合并升序链表 -—python中堆的使用
heapq模块提供了一些函数来操作堆,包括将列表转换为堆、向堆中插入元素、从堆中弹出最小元素等。4. 在内层循环中,将每个节点的值加入小根堆h中,使用heapq.heappush()函数。3. 使用两个嵌套的循环,外层循环遍历链表列表lists,内层循环遍历每个链表的节点。这些是一些基本的堆操作,你可以根据具体的需求使用这些函数来实现堆的功能。输入:lists = [[1,4,5],[1,3,4],[2,6]]请你将所有链表合并到一个升序链表中,返回合并后的链表。输出:[1,1,2,3,4,4,5,6]原创 2023-11-13 21:27:16 · 250 阅读 · 0 评论 -
leetcode 22,括号生成 (dfs) 21 合并链表
在while循环中,代码会比较list1和list2的当前节点的值, 将较小的节点添加到新链表的末尾,并将对应的链表向前移动一位。此时,另一个链表可能还有剩余的节点,这些节点都比新链表的所有节点的值要大, 所以可以直接将它们添加到新链表的末尾。输出:["((()))","(()())","(())()","()(())","()()()"]输出的结果如下 ['((((', '((()', '(()(', '(())', '()((',((((实际上已经超过n了,我们生成同一方向的括号只需要n个即可,原创 2023-11-12 21:13:36 · 49 阅读 · 1 评论 -
leetcode 题解 20. 有效括号(采用栈 python实现栈操作)
最重要 python需要优雅,优雅永不过时!!!原创 2023-11-12 21:04:31 · 140 阅读 · 1 评论 -
leetcode 咒语药水+情侣牵手+链表处理(删去操作)详解(干货满满!!!)
如果你看到这里突然一滑动觉得无聊,不妨直接看看下面链表总结,我举例说明了一种很不错的方法,同时还有一些总结心得,干货满满,比我前面这俩个水字数题强太多太多了原创 2023-11-11 20:52:54 · 560 阅读 · 1 评论 -
力扣每日一题:逃离火灾
时间打败 100% 内存打败100% 的超强解法,解决力扣2258 逃离火灾原创 2023-11-09 21:25:18 · 136 阅读 · 1 评论 -
leetcode (基于python)每日一题+ 15-18题解(双指针总结)
题解:建立数字与字母的字典,然后一层一层遍历,这里完全可直接返会temp 只是为了满足题目要求返回【】,故用temp 转化一下,先遍历数组,取出单个数子,将其对应的字母遍历保存,然后第二个数子,取出字母,在遍历第一个数字字母的循环下,全都组合一遍,存入链表(这里第一个数子与第二个数字谁先遍历无所谓,只要最后添加的时候调好位置就行)本质就是数出0和1 的数量,判断是不是连着的,如果不是计数置零,连着的数出来,则平衡串为小的数量的2倍,(多的肯定够配出平衡串,但是少的不行,故需要以少的为基准)原创 2023-11-08 20:59:49 · 333 阅读 · 1 评论 -
力扣题解 ———每日一题+11-14题
题解:这个题第一次看到有点懵逼,第一想法就是建立字典然后采用映射关系,后面越写越发现,只要你字典够全面(不是把所有数字都写完昂,是关于罗马数字左右不同的情况),就可以很容易解决 对比数字,需要注意这与平时处理求出每位数字不同,这里罗马数字已经就代不同数字,所以采用减法逐步匹配字典。题解:与12题基本大同小异,但是需要注意,罗马数字为串存储,匹配时一个一个取出匹配,这就涉及到罗马数字中某些字母位于左右不同的值得情况。优化:折半思维,双指针优化,从头尾同时开始查找,减少了大量的重复操作,其他原理一致。原创 2023-11-07 20:36:24 · 289 阅读 · 0 评论 -
leetcode 7-8题解
具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1。此题可能网速够给力,优化后,时间上直接干掉了100% 还是很不错的,读者可以自行根据第七题,对这题进行求解,或许时空复杂度会耗费多点,但是有利于,对自己的编程能力提升。将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。字符串的其余部分将被忽略。原创 2023-11-01 22:00:38 · 44 阅读 · 1 评论 -
leetcode 1-3 题解
因为时间问题,就不一 一分析问题,代码中难以理解的地方,都加以注释,读者可根据注释进行理解,若还有不懂的地方,欢迎评论区留言,都会回复。给你两个 非空 的链表,表示两个非负的整数。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:l1 = [9,9,9,9,9,9,9],输出:[8,9,9,9,0,0,0,1]原创 2023-11-01 21:53:17 · 171 阅读 · 1 评论 -
力扣(leetcode)5.求最长回文子串
最近刷力扣,发现基于python的解题较少,刚好我一直用python解题,便萌生做一个基于python的解题专栏,将持续更新力扣的算法解题心得,供大家参考原创 2023-10-29 21:22:53 · 460 阅读 · 1 评论