
Leetcode中等
文章平均质量分 56
青少年编程小助手_Python
目前担任CCF编程能力等级认证(GESP)技术委员会委员,信息技术新工科产学研联盟青少年信息技术与计算思维能力测评标准组专家。
展开
-
Leetcode中等:134. 加油站
简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。(greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。又因为有解时答案唯一,故可将问题转化为求连续和法,若连续和小于等于0,那么此段中肯定不含可以作起点的油站,将下一个油站记为起点继续计算。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。原创 2022-10-06 11:35:54 · 736 阅读 · 0 评论 -
Leetcode 中等:2. 两数相加
模仿我们小学时代学的加法运算。个位相加超过十进一,十位相加有进位则加上进位,依次类推。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。原创 2022-09-20 08:43:20 · 223 阅读 · 0 评论 -
Leetcode中等:3. 无重复字符的最长子串
借助动态规划的思路,从前到后求出以每个位置为终止位置,所构成无重复子串的长度,之后求这些长度的最大值即可。给定一个字符串,请你找出其中不含有重复字符的。其最长无重复子串的长度为。原创 2022-09-20 08:45:51 · 110 阅读 · 0 评论 -
Leetcode中等:5. 最长回文子串
适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。回文是一个正读和反读都相同的字符串,例如,“aba”是回文,而“abc”不是。分别是区间的左右边界的索引值,使用左闭、右闭区间表示左右边界可以取到。原创 2022-10-04 21:48:05 · 155 阅读 · 0 评论 -
Leetcode中等:7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。假设环境不允许存储 64 位整数(有符号或无符号)。如果反转后整数超过 32 位的有符号整数的范围。:把负数转换为正数,通过“队列”统一处理。转化成字符串,通过切片方式处理。原创 2022-09-20 08:47:14 · 141 阅读 · 0 评论 -
Leetcode中等:11. 盛最多水的容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。把每一棵子树按照同样的方法分析,很容易可以知道,双索引法走的路径包含了最大面积。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。第二种:利用双索引的方法。第一种:利用暴力算法。原创 2022-09-20 08:48:36 · 110 阅读 · 0 评论 -
Leetcode 中等:15. 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。索引,如果等于零,则加入到存储最后结果的result链表中。当然,题目中要求这个三元组不可重复,所以在进行的过程中加入去重就好。模仿快速排序的思路,如果。请你返回所有和为 0 且不重复的三元组。为了避免三次循环,提升执行效率。:答案中不可以包含重复的三元组。指针,如果小于零,向。原创 2022-09-27 16:48:55 · 428 阅读 · 0 评论 -
Leetcode 中等:16. 最接近的三数之和
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。第二种:利用 排序 + 三索引 的方法。假定每组输入只存在恰好一个解。执行结果:超出时间限制。第一种:利用暴力算法。原创 2022-09-27 16:50:43 · 82 阅读 · 0 评论 -
Leetcode 中等:19. 删除链表的倒数第N个节点
这样就可以从头结点开始遍历到该位置,删除该结点即可。给定一个链表,删除链表的倒数第。个节点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?使用两个指针,前面的指针。,再求出要删除结点的位置。即走到要移除的结点位置。步,接着让后面的指针。原创 2022-09-27 16:51:59 · 233 阅读 · 0 评论 -
Leetcode 中等:43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。原创 2022-09-27 17:00:19 · 182 阅读 · 0 评论 -
Leetcode 中等:50. Pow(x,n)
我们先算出所有2的幂,然后在算出所有x的2的幂次方。再把n拆成二进制,把二进制当中对应位置是1的值乘起来,就得到了结果。,即计算 x 的 n 次幂函数。可以拆成二进制表示,例如当。时,5的二进制是0101,原创 2022-09-27 17:04:55 · 390 阅读 · 0 评论 -
Leetcode 中等:54. 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照。,返回矩阵中的所有元素。原创 2022-09-27 17:06:30 · 128 阅读 · 0 评论 -
Leetcode 中等:55. 跳跃游戏
简单地说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。(greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法与动态规划的不同在于它对每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。贪心策略:每次记录能跳到点的最大值,如果当前点超出最大值,返回false,如果最大值达到最后一个位置,返回true。原创 2022-09-27 17:08:50 · 122 阅读 · 0 评论 -
Leetcode 中等:59. 螺旋矩阵II
所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。给定一个正整数 n,生成一个包含 1 到。原创 2022-09-27 17:09:36 · 137 阅读 · 0 评论 -
Leetcode 中等:61. 旋转链表
旋转链表,将链表每个节点向右移动。给你一个链表的头节点。原创 2022-09-30 19:44:07 · 93 阅读 · 0 评论 -
Leetcode 中等:62. 不同路径
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。使用递归的方式,容易理解但会耗费大量的时间,所以在运行 示例5 的时候,超时了。问总共有多少条不同的路径?第二种:利用动态规划。原创 2022-09-30 22:51:03 · 82 阅读 · 0 评论 -
Leetcode 中等:78. 子集
依次以nums[i]为启始点进行搜索,且后续搜索数值都要大于前一个数值,这样会避免重复搜索。给你一个整数数组 nums ,数组中的元素。返回该数组所有可能的子集(幂集)。利用整数集合的思路。原创 2022-09-30 22:52:02 · 298 阅读 · 0 评论 -
Leetcode 中等:89.格雷编码
由 n 位推导 n+1 位结果时,n+1 位结果包含 n 位结果,同时包含 n 位结果中在高位再增加一个位 1 所形成的令一半结果,但是这一半结果需要与前一半结果镜像排列。给你一个整数 n ,返回任一有效的 n 位格雷码序列。n 位格雷码序列 是一个由。原创 2022-09-30 22:52:51 · 326 阅读 · 0 评论 -
Leetcode 中等:95. 不同的二叉搜索树II
给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同。以上就是利用递归求解该问题的思路。原创 2022-09-30 22:54:00 · 250 阅读 · 0 评论 -
Leetcode中等:137. 只出现一次的数字II
注意:Python的整型方便是方便了,但是由于其没有最大值,所以,当输出是负数的时候,会导致认为是正数!因为它把32位有符号整型认为成了无符号整型,所以这就是Python的一个坑。,将每个数想象成 32 位的二进制,对于每一位的二进制的1累加起来必然是。你必须设计并实现线性时间复杂度的算法且不使用额外空间来解决此问题。代表目标值在这一位有贡献(=1),然后将所有有贡献的位记录到。请你找出并返回那个只出现了一次的元素。想法很简单,但提交的时候溢出了。即可,很通用并列去找每一位。存储该数字出现的频数。原创 2022-10-01 12:14:18 · 809 阅读 · 0 评论 -
Leetcode 中等:146. LRU缓存机制
计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存里,方便之后继续使用。那么,什么样的数据,我们判定为「有用的」的数据呢?LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。把字典当作一个存储容器,由于字典是无序的,即。放入的顺序是没有关系的,所以需要一个。第二种:利用 字典 + 列表 的方式。原创 2022-09-30 22:54:56 · 431 阅读 · 0 评论 -
Leetcode中等:215. 数组中的第K个最大元素
请注意,你需要找的是数组排序后的第。你必须设计并实现时间复杂度为。个最大的元素,而不是第。原创 2022-10-04 21:51:46 · 81 阅读 · 0 评论 -
Leetcode中等:236. 二叉树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。一个节点也可以是它自己的祖先。原创 2022-10-04 21:52:43 · 135 阅读 · 0 评论 -
Leetcode中等:641. 设计循环双端队列
【代码】Leetcode中等:641. 设计循环双端队列。原创 2022-10-04 21:53:41 · 142 阅读 · 0 评论