
LeetCode
一只大鸽子
Python, Django,Pygame,PyQt.
展开
-
LeetCode_2021年3月31日
2021年3月31日,记录下自己的LeetCode历程。//愿意一起交流/打卡的同学可以加QQ群:751397328原创 2021-03-31 20:59:40 · 151 阅读 · 0 评论 -
二刷力扣--二叉树(3)
二叉树相关题目。原创 2023-09-20 08:00:00 · 215 阅读 · 0 评论 -
二刷力扣--二叉树(2)
Leetcode上二叉树相关题目。原创 2023-09-19 17:23:35 · 362 阅读 · 0 评论 -
二刷力扣--二叉树(1)基础、遍历
二叉树基础、遍历(前中后序遍历、层序遍历)的递归和迭代实现。原创 2023-09-19 17:17:26 · 279 阅读 · 0 评论 -
二刷力扣--栈和队列
栈和队列。LeetCode题目的Python实现。原创 2023-09-15 22:04:41 · 775 阅读 · 0 评论 -
二刷力扣--字符串
Python中, 字符串是由 Unicode 码位构成的不可变序列。原创 2023-09-14 15:13:08 · 201 阅读 · 0 评论 -
二刷力扣--哈希表
哈希表可以根据键在O(1)时间内进行访问。哈希表实际上可以看成是一个数组,但是可以通过哈希函数计算出数组下标,直接访问。常用的有集合,字典。原创 2023-09-13 18:18:05 · 194 阅读 · 0 评论 -
二刷力扣--数组
最近在准备找工作,跟着代码随想录上的刷题顺序刷一遍LeetCode。虽然也刷过几百道LeetCode题了,但是没有按照题目的类别去刷,这次系统地刷一遍题目,总结一下方法和套路。原网站的题解是C++版本的,我使用的是Python,会额外记录Python刷题时一些坑以及技巧。原创 2023-09-11 20:38:00 · 230 阅读 · 0 评论 -
二刷力扣--链表
LeetCode 链表类型题目小结原创 2023-09-12 16:11:25 · 148 阅读 · 0 评论 -
数据结构 树(第10-14天)
数据结构 树(第10-14天)原创 2022-10-22 09:18:59 · 362 阅读 · 0 评论 -
数据结构 栈 / 队列(第9天)
数据结构 栈 / 队列(第9天)原创 2022-10-22 09:18:26 · 190 阅读 · 0 评论 -
数据结构 链表(第7、8天)
LeetCode 链表原创 2022-10-22 09:17:32 · 342 阅读 · 0 评论 -
数据结构 字符串 (第6天)
这里的三题都和字符出现次数有关,可以用dict或Counter来轻松解决。和ditc相关的可以参照文档,里面比较常用的是defaultdict和Counter。原创 2022-09-26 09:57:39 · 172 阅读 · 0 评论 -
数据结构 数组部分小结
总结数组常用算法和函数。力扣-数据结构入门: https://leetcode.cn/study-plan/data-structures/第1-5天为数组。原创 2022-09-23 14:46:21 · 470 阅读 · 0 评论 -
2022-07-12 1252. 奇数值单元格的数目
二维数组+模拟原创 2022-07-12 15:12:38 · 190 阅读 · 0 评论 -
每日一题 676. 实现一个魔法字典
LeetCode每日一题,2022.7.11 字符串。原创 2022-07-11 10:56:45 · 216 阅读 · 0 评论 -
LeetCode 常用方法
记录总结LeetCode中常用的算法,包括模板及例题。原创 2022-03-12 11:29:02 · 489 阅读 · 0 评论 -
39.组合总和(回溯)
39.组合总和(回溯)原创 2022-03-12 11:25:10 · 178 阅读 · 0 评论 -
537. 复数乘法
使用字符串表示复数,返回两个复数的乘积。原创 2022-02-25 11:55:07 · 306 阅读 · 0 评论 -
1706. 球会落何处 for else语法
题:从格子顶部n列放球,返回球的落点。如果停在中间,在为-1。解:模拟如果下落的下一步掉到边缘(<0 or >=n),或下一个挡板方向(row[col] != dir))则听在中间。class Solution: def findBall(self, grid: List[List[int]]) -> List[int]: #grid[i][j] = 1:右 ; =-1 :左 m,n = len(grid),len(grid[0])原创 2022-02-24 14:22:45 · 338 阅读 · 0 评论 -
917. 仅仅反转字母
题:给你一个字符串,只反转其中的字母。其它的保持不变。解:双指针反转字母。class Solution: def reverseOnlyLetters(self, s: str) -> str: arrs = list(s) n = len(s) left, right = 0, n-1 while left< right: while left <n and not s[left..原创 2022-02-23 11:36:53 · 190 阅读 · 0 评论 -
力扣300题记录
从12月15日开始,到2月22日,大概2个月时间刷了300道。其中大部分(212)是简单题,一些(89)是中等题,基本没有(8)困难题。刷题顺序大概是先刷了“学习”里的《初级算法》、《中级算法》,然后是"题库"里的《剑指Offer》。没事时做“全部题目”中的简单题。前两周参加两次周赛,基本能做前两题(简单+中等),第三题(中等)看题目,第四题(困难)直接放弃。小结:刷完初级算法、中级算法后简单题基本能比较快地写出来,但是中等题有些类型还是比较生疏。后面要开始刷中等题了。...原创 2022-02-22 15:57:22 · 8140 阅读 · 0 评论 -
969.煎饼排序
题:969. 煎饼排序给你一个整数数组arr,请使用煎饼翻转完成对数组的排序。一次煎饼翻转的执行过程如下:选择一个整数k,1 <= k <= arr.length 反转子数组arr[0...k-1](下标从 0 开始)例如,arr = [3,2,1,4],选择k = 3进行一次煎饼翻转,反转子数组[3,2,1],得到arr = [1,2,3,4]。以数组形式返回能使arr有序的煎饼翻转操作所对应的k值序列。任何将数组排序且翻转次数在...原创 2022-02-19 11:37:19 · 248 阅读 · 0 评论 -
1791. 找出星型图的中心节点
题:有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。解:简单的阅读理解题。 中心节点就是n-1条边的共同结点,可以转换为求edge[0]和edge[1]的共同结点。class Solution: def原创 2022-02-18 11:05:41 · 289 阅读 · 0 评论 -
1380. 矩阵中的幸运数 (zip和*解包)
给你一个m * n的矩阵,矩阵中的数字各不相同。请你按任意顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小 在同一列的所有元素中最大解:1.求出每行最小元素rowmin和每列最大元素colmax然后遍历matrix,如果同时满足rowmin和colmax,则是幸运数。class Solution: def luckyNumbers (self, matrix: List[List[int]]) -> Li...原创 2022-02-15 10:46:59 · 426 阅读 · 0 评论 -
每日一题 540. 有序数组中的单一元素
题:给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2解:单独元素前面有n对元素,即2n个元素,所以单独元素的下标一定是偶数。所以只要二分搜索偶数下标,若它与num[mid+1]是一对,则说明前面的都是成对的,low= mid+2;否则说明前面有单独的,high原创 2022-02-14 10:51:11 · 468 阅读 · 1 评论 -
每日一题 1189. “气球” 的最大数量
题:给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。解:计数,单词个数由最少的字母决定。(木桶效应)class Solution: def maxNumberOfBalloons(self, text: str) -> int: cnt = Counter(text) retu原创 2022-02-13 10:20:30 · 264 阅读 · 0 评论 -
二分查找模板
给出二分查找模板,包括:二分查找目标值,左边界,右边界。(Java和Python版本)原创 2022-02-12 18:17:38 · 735 阅读 · 1 评论 -
每日一题 1020. 飞地的数量
题:给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。返回网格中 无法 在任意次数的移动中离开网格边界的陆地(飞地)单元格的数量。解:用2标记可以离开的陆地。首先标记最外层的陆地2.然后从2出发,深度优先搜索周围的陆地都标记为2。最后grid里没被标记的陆地就是飞地。class Solution: def num原创 2022-02-12 14:41:58 · 283 阅读 · 0 评论 -
每日一题 1984. 学生分数的最小差值
题:给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。返回可能的 最小差值解:class Solution: def minimumDifference(self, nums: List[int], k: int) -> int: nums.sort() cc =.原创 2022-02-11 10:52:31 · 610 阅读 · 0 评论 -
每日一题 1447. 最简分数
题:给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。解: 求最简分数,等价于分母和分子最大公约数是1。class Solution: def simplifiedFractions(self, n: int) -> List[str]: res = [] for i in range(2,n+1): for j in range(1,i)原创 2022-02-10 11:55:39 · 626 阅读 · 0 评论 -
每日一题 唯一元素的和
对整数数组nums中只出现过一次的元素求和。class Solution: def sumOfUnique(self, nums: List[int]) -> int: cnt = Counter(nums) return sum(k for k,v in cnt.items() if v == 1)原创 2022-02-06 13:52:31 · 405 阅读 · 0 评论 -
每日一题 1342. 将数字变成 0 的操作次数
题:给定num,如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。求将num变成0所需次数。解:直接按题意,位运算可以提高计算效率class Solution: def numberOfSteps(self, num: int) -> int: step = 0 while num: if num&1: #num为奇,等价于num%2 ==1 num -= 1原创 2022-01-31 10:43:52 · 759 阅读 · 0 评论 -
884. 两句话中的不常见单词
题:输入两句话,返回两句话中不常见单词列表。“不常见单词”指在一句话中只出现一次,且另一句话没有出现。解:直接按题意,求在一句话中只出现一次,且另一句话没有出现的单词。用Counter()计算次数。class Solution: def uncommonFromSentences(self, s1: str, s2: str) -> List[str]: tokens1 = s1.split() tokens2 = s2.split()原创 2022-01-30 10:44:06 · 749 阅读 · 0 评论 -
每日一题 1765. 地图中的最高点
题:求二维地图上可能存在的最高点的高度。即在地图上给出水域,求对空白区域填充陆地的方法。输入m*n的二维数组isWater,表示该位置是否为水域。1是0否。求高度时,水域高度为0。且相邻陆地高度差最多为1。解:参考题解。广度优先BFS,从水域开始,填充相邻且未被设置的格子。class Solution: def highestPeak(self, isWater: List[List[int]]) -> List[List[int]]: m, n = ..原创 2022-01-29 11:26:47 · 1594 阅读 · 0 评论 -
1996. 游戏中弱角色的数量
题:角色有两种属性,攻击和防御。当角色攻击和防御有严格小于某个角色时,则该角色为“弱角色”。求数组中“弱角色”个数。解:本题可以对按攻击对数组排序,然后比较防御。记当前最大防御角色为q,当前访问的角色为p。如果q防御>p防御,且q攻击>p攻击,那么p就是“弱角色”。一个问题是,如何保证q防御> p防御时,q攻击 也> p攻击?题解中给出方法,排序时按攻击降序,攻击相同时,按防御升序。假设:如果 q防御比p大,且q攻击和p攻击相同。可知q一定在p后面。但是我原创 2022-01-28 13:02:00 · 2911 阅读 · 0 评论 -
每日一题 2047. 句子中的有效单词数
判断句子中的有效单词数。题目比较简单,将句子拆分成单词,然后判断单词是否有效。但是“有效”条件有点繁琐:如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:1.不含数字2.至多一个 连字符 '-' 。如果存在,连字符两侧应当都存在小写字母("a-b" 是一个有效单词,但 "-ab" 和 "ab-" 不是有效单词)。3.至多一个 标点符号。如果存在,标点符号应当位于 token 的 末尾 。官方题解:class Solution: def.原创 2022-01-27 12:07:23 · 1009 阅读 · 0 评论 -
每日一题 2013. 检测正方形
题:在x-y平面检测可以构成轴对齐正方形的方案数。要点:1.轴对齐:正方形的边和坐标轴平行。2.平面上同一位置的点可有多个。解:(参考官方题解)使用字典嵌套来存储点。{y:{x:数量}}计算正方形方案时可以枚举y2确定正方形边长abs(y2-y),从而确定正方形的四个点。class DetectSquares: def __init__(self): self.map = defaultdict(Counter) # {y:{x:数量}}原创 2022-01-26 13:25:54 · 1033 阅读 · 0 评论 -
每日一题 1688. 比赛中的配对次数
题:比赛有n个队伍,每轮淘汰一半,如果n是奇数,那么多的一个队伍直接晋级。求总共的比赛次数。解:(模拟)class Solution: def numberOfMatches(self, n: int) -> int: res = 0 while n > 1: res += n//2 n = (n+1) // 2 return res ...原创 2022-01-25 13:08:30 · 5479 阅读 · 0 评论 -
力扣中级算法(Python)
1 概述概述这是由 LeetCode 官方推出的的经典面试题目清单,我们将题目重新整理规划,从而为大家提供更好的练习体验和帮助大家找到理想的工作。 我们将题目分为以下三个部分:初级算法 - 帮助入门中级算法 - 巩固训练高级算法 - 提升进阶这一系列 LeetBook 将帮助您掌握算法及数据结构,并提高您的编程能力。编程能力就像任何其他技能一样,也是一个可以通过 刻意练习 大大提高的。大多数经典面试题目都有多种解决方案。 为了达到最佳的练习效果,我们强烈建议您至少将此清单里的...原创 2022-01-04 11:19:11 · 1059 阅读 · 0 评论