
leetcode
文章平均质量分 77
_忽如远行客
人一能之,已百之;人十能之,己千之.果能此道矣,虽愚必明,虽柔必强。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Python剑指offer系列】- 06.从尾到头打印链表
题目链接剑指 Offer 06. 从尾到头打印链表 - 力扣(LeetCode) (leetcode-cn.com)题目描述输入链表的头节点,按照从尾到头的顺序打印每个节点的值(用数组返回)示例输入:head = [1,3,2]输出:[2,3,1]解题思路一由于链表只能从前向后遍历访问每个节点,题目要求倒序输出节点的值。这类涉及到先入后出,顺序翻转的需求,可以考虑借助栈来实现。具体思路为从前到后遍历链表,将各节点的值写入栈中,完成后再依次将元素弹出。在Python中,原创 2021-05-25 15:58:23 · 366 阅读 · 0 评论 -
【Python剑指offer系列】-05. 替换空格
题目链接剑指 Offer 05. 替换空格 - 力扣(LeetCode) (leetcode-cn.com)题目描述实现一个函数,将字符串s中每个空格替换成“%20”.示例输入:“We are happy”输出:“We%20are%20happy”解题思路饿...原创 2021-05-25 11:10:06 · 439 阅读 · 0 评论 -
【Python-剑指offer系列】-04.二维数组中的查找
题目链接剑指 Offer 04. 二维数组中的查找 - 力扣(LeetCode) (leetcode-cn.com)题目描述给定n*m的二维数组,每一行都按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序。请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数。0<=n<=1000,0<=m<=1000。示例matrix =[[1, 4, 7, 11, 15], [2, 5, 8, 12, 19],...原创 2021-05-24 16:26:48 · 402 阅读 · 0 评论 -
【Python-剑指 Offer系列】 03. 数组中重复的数字
题目链接剑指 Offer 03. 数组中重复的数字 - 力扣(LeetCode) (leetcode-cn.com)题目描述长度为n的数组nums中的所有数字都在0~n-1范围内,数组中某些数字是重复的,但不知道有哪几个数字重复,也不知道数字重复几次。请找出数组中任意一个重复数字并返回。2=<n<=10^5。示例输入:[2,3,1,0,2,5]输出:2或3解题思路一如果要返回任意一个重复元素,在遍历数组的过程中需要判断当前遍历到的元素是不是在前面遇到过。考虑到原创 2021-05-24 11:26:01 · 415 阅读 · 0 评论 -
【leetcode-Python】-前缀和-724. 寻找数组的中心索引
题目链接https://leetcode.com/problems/find-pivot-index/题目描述给定整数数组nums,返回数组的 “中心索引” 。一个数组的“中心索引”满足其左侧所有元素相加的和等于其右侧所有元素相加的和(均不包含中心索引位置的元素)。如果数组索引为0(指向数组左边界),那么该数组下标左侧所有元素相加的和为0(左侧没有任何元素)。如果数组索引指向数组右边界是类似的情况。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。.原创 2021-04-17 01:44:17 · 324 阅读 · 2 评论 -
【leetcode-Python】-数学-263. Ugly Number
题目链接https://leetcode.com/problems/ugly-number/题目描述给定整数n,判断n是否为丑数。如果是,则返回true,否则返回false。丑数指质因数只包含2、3、5的数或质因数只包含2、3的数。-2^31<=n<=2^31-1示例输入:n=14输出:False14不是丑数,因为它包含了另一个质因数7。解题思路分情况讨论。首先n如果不是正整数,则一定不是丑数,即n<=0的情况直接返回False。如果n是正整原创 2021-04-12 22:32:48 · 182 阅读 · 0 评论 -
【leetcode-Python】-优先队列&多指针-264. Ugly Number II
题目链接https://leetcode.com/problems/ugly-number-ii/题目描述示例原创 2021-04-12 22:32:20 · 241 阅读 · 0 评论 -
【leetcode-Python】-数学-剑指 Offer 62. 圆圈中最后剩下的数字
题目链接剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) (leetcode-cn.com)题目描述0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。1=<n<=10^5,1<=m<=10^6。原创 2021-04-12 16:33:20 · 373 阅读 · 0 评论 -
【leetcode-Python】-BST-235. Lowest Common Ancestor of a Binary Search Tree
题目链接https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/描述给定二叉搜索树BST,找出该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:”对于树T的两个节点p和q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大。(一个节点也可以是它自己的祖先)。所有节点的值都唯一,p、q为不同节点且均存在于给定的BST中。示例输入:root = [6,2,8,0原创 2021-04-09 14:08:09 · 183 阅读 · 0 评论 -
【leetcode-Python】-后序遍历+回溯-236. Lowest Common Ancestor of a Binary Tree
题目链接https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/题目描述给定一个二叉树,找到该树中两个指定节点p、q的最近公共祖先。树中所有节点的值都唯一,p、q为不同节点且均存在于给定的二叉树中。示例输入:root = [3,5,1,6,2,0,8,null,null,7,4],p=5,q = 1输出:3节点1和节点5的最近公共祖先是节点3。解题思路对于二叉树问题,逃不开二叉原创 2021-04-09 13:04:38 · 259 阅读 · 0 评论 -
【leetcode-Python】-回溯-复原IP地址
题目链接https://leetcode.com/problems/restore-ip-addresses/题目描述有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。给定一个只包含数字的字符串,想要用'.'分割字符串原创 2021-04-08 16:48:31 · 508 阅读 · 0 评论 -
【leetcode-Python】-快慢指针- 19. Remove Nth Node From End of List
题目链接https://leetcode.com/problems/remove-nth-node-from-end-of-list/题目描述给定一个链表,删除链表的倒数第n个节点后返回链表的头节点。示例输入:head = [1,2,3,4,5],n=2输出:[1,2,3,5]解题思路一此题可以借助快慢指针,一次遍历就得到结果。fast指针先走n步,指向第n个节点(头节点为第1个节点)。slow指针指向头节点。那么fast和slow指针中间隔着n-1个节点。fast指原创 2021-04-07 22:39:50 · 230 阅读 · 0 评论 -
【leetcode-Python】-快慢指针-142. Linked List Cycle II
题目链接https://leetcode.com/problems/linked-list-cycle-ii/题目描述给定一个链表,如果链表中有环,返回链表中环的起始位置。如果没有环则返回null。示例给定链表:输出:1(索引为1的节点为环的起点)解题思路首先我们通过【leetcode-Python】-快慢指针-141. Linked List Cycle判断链表中是否有环,fast指针一次走两步,slow指针一次走一步,如果发现fast指针和slow指针相遇则跳出.原创 2021-04-07 21:12:48 · 270 阅读 · 2 评论 -
【leetcode-Python】-快慢指针-141. Linked List Cycle
题目链接https://leetcode.com/problems/linked-list-cycle/题目描述给定一个链表,判断链表中是否有环。如果链表中存在环,则返回 true 。 否则返回 false 。示例对于给定链表:返回True。解题思路快慢指针常用于解决链表数据结构的一些问题,判定链表是否有环是快慢指针的经典应用。由于单链表中每个节点只指向下一个节点, 只用一个指针无法判断链表中是否含有环。我们可以用两个指针fast和slow,其中fast指针每次前进.原创 2021-04-07 20:44:25 · 269 阅读 · 0 评论 -
【leetcode-Python】-找数学规律-LCP 29. 乐团站位
题目链接题目描述某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,...,9 循环重复排列。例如当 num = 5 时,站位如图所示:请返回位于场地坐标 [Xpos,Ypos] 的成员所持乐器编号。1<=num<=10^9,0<=xPos,yPos原创 2021-04-07 16:52:37 · 347 阅读 · 1 评论 -
【leetcode-Python】-双指针-LCP 28. 采购方案
题目链接https://leetcode-cn.com/problems/4xy4Wx/题目描述小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1。示例输入:nums = [2,2,1,9],target = 10输出:4符合预算的采购方案如下:nums原创 2021-04-07 09:43:13 · 239 阅读 · 1 评论 -
【leetcode-Python】-滑动窗口-209. 长度最小的子数组
题目链接https://leetcode.com/problems/minimum-size-subarray-sum/题目描述给定一个正整数数组nums和正整数target,找出nums中元素和大于等于target的最短子串,如果没有符合条件的子串,则返回0。示例输入:target = 7,nums = [2,3,1,2,4,3]输出:2子串[4,3]是满足条件的最短子串。解题思路此题求最短子串,可以由滑动窗口算法来求解。如果窗口内元素和小于target,则子串.原创 2021-04-06 09:48:56 · 276 阅读 · 0 评论 -
【leetcode-Python】-滑动窗口-1208. 尽可能使字符串相等
题目链接https://leetcode.com/problems/get-equal-substrings-within-budget/题目描述给定两个长度相同的字符串s和t。将s[i]变为t[i]需要|s[i]-t[i]|的开销(开销可能为0),即两个字符ASCII码值的差的绝对值。用于变更字符串的最大预算是maxCost,在转化字符串时,总开销应当小于等于该预算。如果可以将s的某个子串转化为t中对应的子串,返回可以转化的最大长度。如果s中没有子字符串可以转化成t中对应的子字符串,则返回0。原创 2021-04-06 09:26:13 · 258 阅读 · 0 评论 -
【leetcode-Python】-最大连续1的个数
题目链接https://leetcode.com/problems/max-consecutive-ones/题目描述给定二进制数组,计算其中最大连续1的个数。示例输入:[1,1,0,1,1,1]输出:3解题思路一可以通过一次遍历实现,记录当前最大的连续1的个数maxcount和当前连续1的个数curcount。如果当前元素为1,就让curcount新增1,并更新maxcount,如果当前元素为0,就将curcount置为0,等下次遇到1再新增。Python实现原创 2021-04-06 08:25:13 · 959 阅读 · 0 评论 -
【leetcode-Python】-滑动窗口-1004. 最大连续1个数 III
题目链接https://leetcode-cn.com/problems/max-consecutive-ones-iii/题目描述给定由若干个0个1组成的数组A,我们最多可以将K个值从0变成1。返回仅包含1的最长(连续)子数组的长度。示例输入:A = [1,1,1,0,0,0,1,1,1,1,0],K=2输出:6将索引为5和10的0替换为1,得到仅包含1的最长连续子数组长度6,替换后的数组为 [1,1,1,0,0,1,1,1,1,1,1]。解题思路Python.原创 2021-04-06 08:24:14 · 355 阅读 · 1 评论 -
【leetcode-Python】-滑动窗口-1493. Longest Subarray of 1‘s After Deleting One Element
题目链接https://leetcode-cn.com/problems/longest-subarray-of-1s-after-deleting-one-element/题目描述给定二进制数组,需要从中删除一个元素。请你再删掉某个元素后得到的结果数组中,返回最长的且只包含1的非空子数组的长度。如果不存在这样的子数组,请返回0。示例输入:nums = [1,1,0,1]输出:3删掉索引为2的数字0后,[1,1,1]包含3个1。解题思路此题和【leetcode-Py.原创 2021-04-05 20:27:26 · 270 阅读 · 1 评论 -
【leetcode-Python】-滑动窗口-424. Longest Repeating Character Replacement
题目链接https://leetcode.com/problems/longest-repeating-character-replacement/题目描述给定仅由大写英文字母组成的字符串s,可以将任意位置上的字符替换为其他字符,最多可以替换k次。在执行上述操作后,找到包含重复字母的最长子串的长度。字符串长度和k不会超过10^4。...原创 2021-04-05 19:09:45 · 389 阅读 · 0 评论 -
【leetcode-Python】-滑动窗口-992. Subarrays with K Different Integers
题目链接https://leetcode.com/problems/subarrays-with-k-different-integers/题目描述给定一个元素均为正整数的数组A,如果A的某个子数组(元素索引连续,且可以有重复元素)中不同整数的个数恰好为K,则称A的这个子数组为好子数组。返回A中好子数组的数目。示例输入:A=[1,2,1,2,3],K=2输出:7恰好由2个不同整数组成的子数组: [1,2],[2,1],[1,2],[2,3],[1,2,1],[2,1,2],[1原创 2021-04-04 16:34:17 · 385 阅读 · 4 评论 -
【leetcode-Python】-滑动窗口-30. Substring with Concatenation of All Words
如何判断某个单词是否完整地出现在窗口中?将原来的字符看作单词即可。单词的长度相同。还是需要看看经典算法。原创 2021-04-03 11:46:11 · 142 阅读 · 1 评论 -
【leetcode-Python】-滑动窗口-3.无重复字符的最长子串
题目链接https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/题目描述给定一个字符串,请找出其中不含有重复字符的最长子串的长度。示例输入:s="abcabcbb"输出:3s中无重复字符的最长子串为“abc”解题思路此题仍是子串问题,我们可以利用滑动窗口算法来解。由于我们只需要保证子串里没有重复字符,因此此前【leetcode-Python】-滑动窗口-76. Mi原创 2021-03-29 10:37:52 · 353 阅读 · 0 评论 -
【leetcode-Python】-滑动窗口-438. Find All Anagrams in a String
题目链接https://leetcode.com/problems/find-all-anagrams-in-a-string/题目描述给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字母异位词指字母相同,但排列不同的字符串。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。不考虑答案输出的顺序。示例输入:s:"cbaebabacd" p:"abc"输出:[0,6]起始索引等于 0 的子串...原创 2021-03-28 17:23:00 · 172 阅读 · 0 评论 -
【leetcode-Python】-滑动窗口-567. Permutation in String
题目链接https://leetcode.com/problems/permutation-in-string/题目要求给定两个字符串s1和s2,写一个函数判断s2是否包含s1的排列。即判断是否存在s1的某个排列是s2的子串。输入的字符串只包含小写字母。示例输入:s1="ab",s2= "eidbaooo"输出:Trues2包含s1的排列之一("ba")解题思路由于排列并不会改变字符串中各个字符的个数,因此如果两个字符串中各个字符个数相等(没有多余字符),一个字符串才原创 2021-03-28 16:32:48 · 247 阅读 · 0 评论 -
【leetcode-Python】-滑动窗口-76.最小覆盖子串
题目链接https://leetcode.com/problems/minimum-window-substring/题目描述给定一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。如果 s 中存在这样的子串,能够保证它是唯一的答案。示例输入:s=“aab”,t="aa"输出:“aa”解题思路滑动窗口属于双指针算法的一种,适合解决子串问题(查找满足一定条件的连续区间的性质(如长.原创 2021-03-27 21:29:35 · 572 阅读 · 2 评论 -
【leetcoded-Python】-BFS-752. Open the Lock
题目链接https://leetcode.com/problems/open-the-lock题目描述给你一个带有4个圆形拨轮的转盘锁。每个拨轮有10个数字:'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮数字和列..原创 2021-03-26 13:23:19 · 130 阅读 · 0 评论 -
【leetcode-Python】-BFS(有模板)-111. Minimum Depth of Binary Tree
题目链接https://leetcode.com/problems/minimum-depth-of-binary-tree/题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。示例输入:root = [3,9,20,null,null,15,7]输出:2解题思路一般求一个节点到另一个节点的最少步数(最短距离问题),会优先考虑BFS。在BFS算法中,需要从问题中抽象出图来,从图的某个顶点V0出发,首先访问和V0相邻且未被访问过的原创 2021-03-26 11:04:55 · 193 阅读 · 1 评论 -
【leetcode-Python】-贪心-406. Queue Reconstruction by Height
题目链接https://leetcode.com/problems/queue-reconstruction-by-height/题目描述假设一群人打乱顺序站成一个队列,数组 people 表示队列中人的一些属性(不一定按顺序)。people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面正好有 ki 个身高大于或等于 hi 的人。请你构造并返回输入数组people 所表示的队列。返回的队列表示为数组 queue ,其中 queue[j] = [hj, kj] 是队列..原创 2021-03-25 10:28:00 · 153 阅读 · 1 评论 -
【leetcode-Python】-贪心-135. Candy
题目链接题目描述示例原创 2021-03-25 10:27:39 · 157 阅读 · 1 评论 -
【leetcode-Python】-贪心-621. Task Scheduler
题目链接https://leetcode.com/problems/task-scheduler/题目描述给定字符数组tasks,表示CPU需要执行的任务列表。不同的字母表示不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在1个单位时间内执行完。在任何一个单位时间,CPU可以完成一个任务,也可以处于待命状态。但是两个相同种类的任务之间必须有长度为整数n的冷却时间,因此至少有连续n个单位时间内CPU在执行不同的任务,或者在待命状态。计算完成所有任务所需的最短时间。示例输入:原创 2021-03-24 14:32:05 · 320 阅读 · 0 评论 -
【leetcode-Python】-贪心-763. Partition Labels
题目链接https://leetcode.com/problems/partition-labels/题目描述给定由小写字母组成的字符串S,将字符串划分为尽可能多的片段,使同一字母最多出现在一个片段中。返回一个表示每个字符串长度的列表。示例输入:S=“ababcbacadefegdehijhklij”输出:[9,7,8]划分结果为"ababcbaca","defegde","hijhklij" 。每个字母最多出现在一个片段中。如果划分为"ababcbacadefegde",原创 2021-03-23 16:57:26 · 163 阅读 · 0 评论 -
【leetcode-Python】-贪心-55. Jump Game
题目链接https://leetcode.com/problems/jump-game/题目描述给定非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素表示你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。如果能,返回true,否则返回false。示例输入:[2,3,1,1,4]输出:true可以先跳一步,从位置0到达位置1,然后从位置1跳3步到达最后一个位置。解题思路这道题目可以理解为“按照给定的规则跳跃,最远可以到达哪里”。如果最远可原创 2021-03-20 22:07:16 · 152 阅读 · 0 评论 -
【leetcode-Python】-动态规划&贪心-45. Jump Game II
题目链接https://leetcode.com/problems/jump-game/题目描述给定非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素表示你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。如果能,返回true,否则返回false。示例解题思路动态规划算法有一部分适用的题目为“求最值”,如最长回文子串:【leetcode-Python】- Dynamic programming-516. Longest Palindromic Sub原创 2021-03-20 22:06:41 · 359 阅读 · 0 评论 -
【leetcode-Python】-区间问题-56. Merge Intervals
题目链接https://leetcode.com/problems/merge-intervals/题目描述给定区间集合intervals,其中单个区间为intervals[i] = [start_i,end_i],合并所有重叠的区间,并返回一个不重叠的区间集合,该集合需要恰好覆盖输入中的所有区间。示例输入:intervals=[[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]由于区间[1,3]和[2,6]重叠,将它们合并原创 2021-03-20 14:40:29 · 217 阅读 · 0 评论 -
【leetcode-Python】-区间问题&贪心策略-452. Minimum Number of Arrows to Burst Balloons
题目链接https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/题目描述在二维空间中有许多球形的气球。输入每个气球在水平方向上气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,如果一个气球的直径开始和结束坐标为 xstart,xend, 且满足 xst.原创 2021-03-20 10:50:07 · 105 阅读 · 0 评论 -
【leetcode-Python】-区间问题&贪心策略-435. Non-overlapping Intervals
题目链接https://leetcode.com/problems/non-overlapping-intervals/题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。认为区间的终点总是大于它的起点,并且认为[1,2]和[2,3]的边界相互“接触”,但没有相互重叠。示例输入:[[1,2],[2,3],[3,4],[1,3]]输出:1移除[1,3]后,剩下的区间没有重叠。解题思路在适合用贪心算法解决的问题中,每一步都做出局部最优的选择,最终的原创 2021-03-20 10:06:30 · 456 阅读 · 2 评论 -
【leetcode-Python】-回溯-39. Combination Sum
题目链接https://leetcode.com/problems/combination-sum/题目描述给定一个无重复元素的数组candidates和目标值target,找出candidates中所有可以使数组和为target的组合。candidates中的数字可以无限制重复被选取。包括target在内的所有数字都为正整数,解集不能包含重复的组合。1 <= candidates.length <= 30;1 <= candidates[i] <= 200;1 &l原创 2021-03-19 15:57:43 · 250 阅读 · 0 评论