
leetcode刷题日记
文章平均质量分 88
七月2333
好好学习,天天向上
展开
-
Leetcode刷题小汇总
消除重复项,合并区间:例如:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].class Solution(object): def merge(self, intervals): intervals.sort() #对输入的列表进行排序 he = [intervals[0]] ...原创 2022-05-23 22:18:18 · 860 阅读 · 0 评论 -
算法之列表模拟抢凳子游戏,图,链表(书)
抢凳子游戏:思路:一个随机数,将对应位置的淘汰,将其他的放到第一位:import randomlist = [1, 2, 3, 4, 5, 6, 7]while True: if len(list) == 1: # pop的只剩最后一位了 print('游戏结束,{}获得了胜利'.format(list[0])) break hit = random.randint(1, 3) # 随机数指定倒数第几位淘汰 whil...原创 2022-05-13 23:46:01 · 785 阅读 · 0 评论 -
Leetcode--回溯算法(组合总数,全排列)
今天在Leetcode的某个评论区看到一张图片,终于让我对不知如何下手的回溯算法清晰了一些,总结下来就是第一遍将所以的数据拿出来,剩下的通过回溯调用的办法,依次的加上去,不符合条件的直接进行剪枝,所以需要进行return条件的设置,进行剪枝。不过还需要多联系,共勉吧组合总和给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。原创 2022-05-13 23:39:01 · 1146 阅读 · 0 评论 -
leetcode-最小路径和、括号生成
最小路径和给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→1→1 的总和最小。思路:动态规划的思想,计算出每一步所需要的代价,那么第一横排和第一列只能单向的走,代价进行简单的累加即可,剩下的数据为该位置的数据加上上面或者左侧的数据,取最小值即可,最后返回最后一个数原创 2022-05-04 00:27:48 · 180 阅读 · 0 评论 -
leetcode刷题日记记录(含简单的思路)
电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]class Solution(object): def letterCombinations(self, digits): """ ...原创 2022-05-03 10:18:22 · 330 阅读 · 0 评论 -
Leetcode刷题——(在排序数组中查找元素的第一个和最后一个位置,三数之和)
在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]思路:主要是使用二分法,用target和中间的数进行比较,如果mid大于target,那么结果一定在左边,反之亦然,每一次可以将范围缩小一半。具体的思路:在left和right中,让left找到刚刚小于target的坐标,将该坐标+1返回原创 2022-04-30 23:55:14 · 262 阅读 · 0 评论 -
Leetcode刷题——对角线遍历、无重复字符的最长子串、盛最多水的容器
对角线遍历示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9]思路:将矩阵的坐标写出来,由图可以发现,下标加起来为偶数的在一起,下标加起来为奇数的在一起,创建一个数组嵌套5个数组分别存放,在一横排中,下标为奇数的却应该在该坐标的最后一个,偶数的在数组的第一个,于是。。。class Solution(object): def findDiagonalOrder(self, mat): """...原创 2022-04-30 00:32:09 · 434 阅读 · 0 评论 -
Leetcode刷题日记(含简单的思路)
消除重复项,合并区间:例如:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].class Solution(object): def merge(self, intervals): intervals.sort() #对输入的列表进行排序 he = [intervals[0]] ...原创 2022-04-23 23:22:05 · 998 阅读 · 0 评论 -
Leetcode双指针刷题日记(python)
数组拆分 I示例 1:输入:nums = [1,4,3,2] 输出:4 解释:所有可能的分法(忽略元素顺序)为: (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3 (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3 (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4 所以最大总和为 4 思路:两两原创 2022-04-24 23:38:15 · 859 阅读 · 0 评论 -
leetcode刷题日记(含简单思路)——python
长度最小的子数组示例 1:找出该数组中满足其和 ≥ target 的长度最小的 连续子数组输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。思路:主要使用双指针滑动窗口,快的滑动,当数据大于目标值,则慢的哪一个向右滑动,并获得计算数组的长度class Solution(object): def minSubArrayLen(self, target, nums): """...原创 2022-04-27 00:11:08 · 241 阅读 · 0 评论