leetcode
yrk0556
yrk0556@foxmail.com联系我
展开
-
Leetcode52 两个链表的第一个相交节点
class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: if not headA or not headB:return None p1,p2=headA,headB while p1!=p2: p1=p1.next if p1 else headB p2=p2.next原创 2021-10-08 16:28:02 · 262 阅读 · 0 评论 -
leetcode每周刷题总结(2021-5-2)
1011、在D天内送达包裹的能力给定一系列包裹的重量,让我们按照顺序把包裹分成D份,放船上运走。求船的最低的运载量x。思路:很多在题目中有最少最低等的描述,很可能用二分法就能解决,就比如这道题,船的最低运载量的最小值和最大值都是清楚的,最小值就是最大包裹的重量(因为比这个小,有的包裹就运不走了),最大值是所有包裹的重量之和(所有的一次能运走,再大没必要)。二分法是否适用需要有一个单调性的判定,这里是,存在一个运载量的下限Xans,当X>=Xans船能运走这批货,当X<Xans时船就不能按时运原创 2021-05-04 23:34:33 · 254 阅读 · 0 评论 -
leetcode 940. 不同的子序列 II
给定一个字符串 S,计算 S 的不同非空子序列的个数。因为结果可能很大,所以返回答案模 10^9 + 7.示例 1:输入:“abc”输出:7解释:7 个不同的子序列分别是 “a”, “b”, “c”, “ab”, “ac”, “bc”, 以及 “abc”。示例 2:输入:“aba”输出:6解释:6 个不同的子序列分别是 “a”, “b”, “ab”, “ba”, “aa” 以及 “aba”。示例 3:输入:“aaa”输出:3解释:3 个不同的子序列分别是 “a”, “aa” 以及原创 2021-04-28 10:20:35 · 213 阅读 · 0 评论 -
面试题 16.24. 数对和 哈希表 双指针
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。示例 1:输入: nums = [5,6,5], target = 11输出: [[5,6]]示例 2:输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]提示:nums.length <= 100000思路假设数组为[1,2,3,4,5,6]...原创 2020-05-05 23:53:33 · 240 阅读 · 0 评论 -
leetcode 24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路:递归或者循环都能解决。用循环交换节点有点复杂,建议用草稿纸画图解决。以前刷题的时候几乎不动笔,直接上手代码,边敲边想,经常性的被一个小细节给绕的头昏脑胀,现...原创 2020-04-12 09:20:42 · 127 阅读 · 0 评论 -
leetcode 1111. 有效括号的嵌套深度
题目链接https://leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/有一组括号,让我们分为离散的两组,这两组的深度最大值最小。输入:seq = "()(())()"输出:[0,0,0,1,1,0,1,1]分析首先我们把所有括号的所在层数求出来,处于同一层的括号肯定是能够相...原创 2020-04-04 12:06:04 · 193 阅读 · 0 评论 -
leetcode 1386. 安排电影院座位 位运算
题目链接:https://leetcode-cn.com/problems/cinema-seat-allocation/在一个电影院里,有n行座位,每行10个,被过道分隔为左边三个中间四个右边三个。四口之家去看电影,有三种坐法,一是都坐中间,二是坐左边过道的两边(各坐两个人),三是坐右边过道两边(各坐两个人)。但是有的座位已经被预约了,问电影院还能够坐多少个这样的四口之家?note:1<...原创 2020-04-03 13:21:25 · 1266 阅读 · 0 评论 -
leetcode 318. 最大单词长度乘积 位运算
给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例 1:输入: ["abcw","baz","foo","bar","xtfn","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "xtfn"。示例 ...原创 2020-03-19 12:37:34 · 147 阅读 · 0 评论 -
LeetCode 372. 超级次方
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入: a = 2, b = [3]输出: 8示例 2:输入: a = 2, b = [1,0]输出: 1024思路class Solution {public: int superPow(int a, vector<int>& b) ...原创 2020-03-17 00:15:10 · 226 阅读 · 0 评论 -
leetcode 560. 和为K的子数组 map应用
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。思路变量sum指到当前元素为止的前缀和...原创 2020-03-14 11:36:55 · 124 阅读 · 0 评论 -
Leetcode 673. 最长递增子序列的个数
给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意: 给定的数组长度不超过 2000 并且结果一定是3...原创 2020-02-25 11:32:00 · 198 阅读 · 0 评论 -
Leetcode 234. 回文链表 快慢指针+翻转链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路:快慢指针+翻转链表定义快指针fast和慢指针slow,fast每次走两步,慢指针每次走一步,循环截止,最后慢指针中间或者中间往前的位置。例如数组[1...原创 2020-02-09 23:15:01 · 321 阅读 · 0 评论 -
leetcode 27. 移除元素 快慢指针
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2020-02-09 18:21:26 · 188 阅读 · 0 评论 -
leetcode 283. 移动零 快慢指针
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路双指针法。这道题目相当经典,将所有 0 移动到数组的末尾,分为两步,第一是将非0数填充到开头,第二是将末尾补0。用一个慢指针slow来表示当前需要填充...原创 2020-02-09 18:12:00 · 177 阅读 · 0 评论 -
leetcode 109. 有序链表转换二叉搜索树 快慢指针
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9...原创 2020-02-03 15:49:38 · 146 阅读 · 0 评论 -
leetcode 160. 相交链表
题目链接 https://leetcode-cn.com/problems/intersection-of-two-linked-lists/思路开始是用双重循环暴力解法,然后参考了评论区大神的解法,记录一下。case 1:两个链表一样长,只需要两个链表的游标每次都前进一步,第一次相等的位置即为公共节点。case 2:两个链表不一样长,这时候解法就多了,大神各显神通,一种解法是先分别求出...原创 2020-02-03 12:37:58 · 86 阅读 · 0 评论 -
leetcode 96. 不同的二叉搜索树
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / ...原创 2020-01-28 10:26:55 · 101 阅读 · 0 评论 -
leetcode 95. 不同的二叉搜索树 II
给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 ...原创 2020-01-28 09:52:03 · 114 阅读 · 0 评论 -
leetcode 239. 滑动窗口最大值 单调队列
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值-----------...原创 2020-01-21 21:27:12 · 121 阅读 · 0 评论 -
leetcode 204. 计数质数
统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。思路一开始以为很简单,写了个O(n^2)的超时了,然后各种优化依然超时。无奈只得看看大神的题解。思虑很简单,我们有一个前提,所有的非素数一定能拆成一些素数的乘积如:4=2x215=2x3x520=2x2x5所以我们先假设所有的数...原创 2020-01-19 16:43:18 · 163 阅读 · 0 评论 -
leetcode 230. 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k ...原创 2020-01-19 16:28:27 · 235 阅读 · 0 评论 -
leetcode 215 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。思路创建一个小根堆维持一个容量为k...原创 2020-01-03 21:49:30 · 135 阅读 · 0 评论 -
leetcode 700 二叉搜索树中的搜索
描述给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返...原创 2019-04-19 21:49:32 · 91 阅读 · 0 评论 -
leetcode 701 二叉搜索树中的插入操作
描述给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和 插入的值: 5你可以返回这个二叉搜索树: 4...原创 2019-04-19 21:21:33 · 206 阅读 · 0 评论 -
leetcode 797 所有可能的路径
描述给一个有 n 个结点的有向无环图,找到所有从 0 到 n-1 的路径并输出(不要求按顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号结点所能到达的下一些结点(译者注:有向图是有方向的,即规定了a→b你就不能从b→a)空就是没有下一个结点了。示例:输入: [[1,2], [3], [3], []]输出: [[0,1,3],[0,2,3]]解释: 图是这样的:0—>...原创 2019-04-19 20:29:45 · 339 阅读 · 0 评论 -
leetcode 235 二叉搜索树的最近公共祖先
描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [...原创 2019-04-23 21:40:08 · 101 阅读 · 0 评论 -
leetcode 846 一首顺子
爱丽丝有一手(hand)由整数数组给定的牌。现在她想把牌重新排列成组,使得每个组的大小都是W,且由W张连续的牌组成。如果她可以完成分组就返回true,否则返回false。示例 1:输入:hand = [1,2,3,6,2,3,4,7,8], W = 3输出:true解释:爱丽丝的手牌可以被重新排列为 [1,2,3],[2,3,4],[6,7,8]。示例 ...原创 2019-03-01 20:59:02 · 313 阅读 · 0 评论 -
leetcode 44 通配符匹配 双指针 动态规划dp
描述给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出:...原创 2019-05-04 21:22:55 · 393 阅读 · 0 评论 -
leetcode 767 重构字符串
描述给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例 1:输入: S = “aab”输出: “aba”示例 2:输入: S = “aaab”输出: “”注意:S 只包含小写字母并且长度在[1, 500]区间内。思路从小到大,交叉着插入bool cmp(pair<char,int> p...原创 2019-04-29 20:25:09 · 183 阅读 · 0 评论 -
leetcode 53 最大子序和
描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路用前缀和暴力class Solution {public:...原创 2019-05-08 14:03:31 · 91 阅读 · 0 评论 -
leetcode 406 根据身高重建队列 贪心
描述假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]...原创 2019-05-01 16:39:56 · 519 阅读 · 0 评论 -
leetcode 14 最长公共前缀
描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路这题咋一看很简单,确实也很简单,但是不注意的话就会...原创 2019-05-07 11:15:04 · 109 阅读 · 0 评论 -
leetcode 238 除自身以外数组的乘积 动态规划
描述给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输...原创 2019-05-08 09:18:25 · 135 阅读 · 0 评论 -
leetcode 650 只有两个键的键盘 递归 动态规划
描述最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例 1:输入: 3输出...原创 2019-05-10 22:31:43 · 185 阅读 · 0 评论 -
leetcode 236 二叉树的最近公共祖先
描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,...原创 2019-04-23 21:05:57 · 119 阅读 · 0 评论 -
leetcode 495 提莫攻击
描述在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 在第 1 秒开始时,提莫开始对艾希进行攻击并使其立即中毒。中毒状态...原创 2019-04-18 21:34:35 · 149 阅读 · 0 评论 -
leetcode 605 种花问题
描述假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出:...原创 2019-04-18 20:56:10 · 187 阅读 · 0 评论 -
leetcode 1007 行相等的最少多米诺旋转
在一排多米诺骨牌中,A[i]和B[i]分别代表第 i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 到 6 的数字同列平铺形成的—— 该平铺的每一半上都有一个数字。)我们可以旋转第i张多米诺,使得A[i]和B[i]的值交换。返回能使A中所有值或者B中所有值都相同的最小旋转次数。如果无法做到,返回-1.示例 1:输入:A = [2,...原创 2019-03-11 11:28:18 · 235 阅读 · 0 评论 -
leetcode 1006 笨阶乘(Clumsy Factorial)
通常,正整数n的阶乘是所有小于或等于n的正整数的乘积。例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1。相反,我们设计了一个笨阶乘clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/),加法(+)和减法(-)。例如,clumsy(10) = 10 * 9...原创 2019-03-11 10:18:53 · 318 阅读 · 0 评论 -
leetcode 141 环形链表(快慢指针)
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos ...原创 2019-03-14 20:50:24 · 126 阅读 · 0 评论