- 博客(53)
- 收藏
- 关注
原创 leetcode 414. 第三大的数
414. 第三大的数给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。示例 1:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例 2:输入:[1, 2]输出:2解释:第三大的数不存在, 所以返回最大的数 2 。示例 3:输入:[2, 2, 3, 1]输出:1解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。提示:1 <= nums
2021-10-06 23:58:36
148
原创 405. 数字转换为十六进制数【位运算+模拟】
文章目录405. 数字转换为十六进制数模拟位运算(!!!)405. 数字转换为十六进制数给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:2
2021-10-02 11:37:45
222
原创 164. 最大间距【桶、基数排序】
164. 最大间距给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元素都是非负整数,且数值在 32 位有符号整数范围内。请尝试在线性时间复杂度和空间复杂度的条件下解决此
2021-10-01 22:38:08
168
原创 【拓扑】207. Course Schedule && 210. Course Schedule II
文章目录207. Course Schedule【拓扑】BFS210. Course Schedule II207. Course Schedule【拓扑】There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates tha
2021-09-30 21:12:33
152
原创 223. Rectangle Area【MATH】
文章目录223. Rectangle Area【MATH】223. Rectangle Area【MATH】Given the coordinates of two rectilinear rectangles in a 2D plane, return the total area covered by the two rectangles.The first rectangle is defined by its bottom-left corner (ax1, ay1) and its top-
2021-09-30 19:06:31
96
原创 639. 解码方法 II【动规】
文章目录639. 解码方法 II【动规】639. 解码方法 II【动规】一条包含字母 A-Z 的消息通过以下的方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要 解码 一条已编码的消息,所有的数字都必须分组,然后按原来的编码方案反向映射回字母(可能存在多种方式)。例如,“11106” 可以映射为:“AAJF” 对应分组 (1 1 10 6)“KJF” 对应分组 (11 10 6)注意,像 (1 11 06) 这样的分组是无效的,因为 “06” 不可以
2021-09-29 19:14:52
72
原创 # 437. 路径总和 III【dfs+前缀和】
文章目录437. 路径总和 III【dfs+前缀和】递归前缀和437. 路径总和 III【dfs+前缀和】给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路
2021-09-29 18:26:00
69
原创 517. 超级洗衣机[贪心]
文章目录517. 超级洗衣机[贪心]官方题解517. 超级洗衣机[贪心]假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回 -1 。示例
2021-09-29 16:30:55
115
原创 371. 两整数之和【数学】
371. 两整数之和给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5提示:-1000 <= a, b <= 1000class Solution { public int getSum(int a, int b) { return b==0?a:getSum(a^b,(a&b)<&
2021-09-26 10:22:09
57
原创 862. 和至少为 K 的最短子数组【前缀和+双向队列】
文章目录862. 和至少为 K 的最短子数组862. 和至少为 K 的最短子数组返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。如果没有和至少为 K 的非空子数组,返回 -1 。示例 1:输入:A = [1], K = 1输出:1示例 2:输入:A = [1,2], K = 4输出:-1示例 3:输入:A = [2,-1,2], K = 3输出:3提示:1 <= A.length <= 50000-10 ^ 5 <= A[i] <= 1
2021-09-25 22:08:50
96
原创 2021-09-25
583. Delete Operation for Two StringsGiven two strings word1 and word2, return the minimum number of steps required to make word1 and word2 the same.In one step, you can delete exactly one character in either string.Example 1:Input: word1 = “sea”, word
2021-09-25 10:56:32
65
原创 430. 扁平化多级双向链表
430. 扁平化多级双向链表多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]输出:[1,2,3,7,8,11,12,9,10,4,5,6]解释:输
2021-09-24 20:23:26
52
原创 leetcode 5. Longest Palindromic Substring/ 1254. Number of Closed Islands/ 45. Jump Game
文章目录5. Longest Palindromic Substringdynamic O(n^2) O(n^2)中心扩展 O(n^2) O(1)manacher O(n) O(n) (too diffcult)1254. Number of Closed Islands[DFS,BFS,并查集]DFSunion-find45. Jump Game II【greedy】greedy O(n) O(n)greedy O(n^2) from the back to the frontgreedy from fi
2021-09-13 21:25:39
131
原创 leetcode tree 124/297/117
文章目录124. Binary Tree Maximum Path Sum【DFS】DFSDFS2124. Binary Tree Maximum Path Sum【DFS】A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at
2021-09-13 15:36:58
62
原创 leetcode 447. Number of Boomerangs【hash】
文章目录447. Number of Boomerangs【hash】Java hash O(n^2)c++ hash O(n^2)447. Number of Boomerangs【hash】You are given n points in the plane that are all distinct, where points[i] = [xi, yi]. A boomerang is a tuple of points (i, j, k) such that the distance betw
2021-09-13 08:08:47
79
原创 leetcode 678. Valid Parenthesis String【stack+logic,greedy,dynamic】
文章目录678. Valid Parenthesis String【stack+logic,greedy,dynamic】stack O(n)dynamic O(n^2)Greedy O(n)deque c++678. Valid Parenthesis String【stack+logic,greedy,dynamic】Given a string s containing only three types of characters: ‘(’, ‘)’ and ‘*’, return true if
2021-09-12 17:06:50
122
原创 4. Median of Two Sorted Arrays【二分】!!!
文章目录4. Median of Two Sorted Arrays【二分】!!!二分,O(log(min(m,n)))二分,O(log(min(m,n))),将边界判断简化二分, O(log(m+n))4. Median of Two Sorted Arrays【二分】!!!Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.T
2021-09-12 16:17:16
69
原创 leetcode 103/1448/46
@toc103. 二叉树的锯齿形层序遍历(剑指offer32lll)【】给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层序遍历如下:[[3],[20,9],[15,7]]/** * Definition for a binary tree node. * struct TreeNode {
2021-09-12 14:45:01
131
原创 leetcode 链表
文章目录206. 反转链表【迭代、递归】迭代递归思路206. 反转链表【迭代、递归】给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。
2021-09-11 21:47:53
63
原创 leetcode 600. Non-negative Integers without Consecutive Ones【数位dp】
600. Non-negative Integers without Consecutive Ones【数位dp】Given a positive integer n, return the number of the integers in the range [0, n] whose binary representations do not contain consecutive ones.Example 1:Input: n = 5Output: 5Explanation:Here ar
2021-09-11 21:46:32
78
原创 leetcode 502. IPO【贪心+优先队列】
502. IPO 【贪心+优先队列】假设 力扣(LeetCode)即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。给你 n 个项目。对于每个项目 i ,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i] 。最初,你的资本为 w 。当你完成一个项目时,你将获得纯利润,且利润
2021-09-08 15:54:34
131
原创 leetcode 470. 用 Rand7() 实现 Rand10()【概率】
470. 用 Rand7() 实现 Rand10()【概率】已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1输出: [7]示例 2:输入: 2输出: [8,4]示例 3:输入: 3输出: [8,1,10]提示:rand7 已定义。传入参数: n 表示 rand10 的调用次数。进阶:rand7()调用次数的 期望值 是多少
2021-09-05 16:59:54
54
原创 leetcode 区间问题
文章目录304. 二维区域和检索 - 矩阵不可变【前缀和】二维前缀和二维前缀和一维前缀和模板总结995. K 连续位的最小翻转次数【贪心、差分、滑动窗口】!!!贪心差分滑动窗口总结354. 俄罗斯套娃信封问题【朴素dp,二分dp,树状数组】朴素dp二分+dp树状数组300. 最长递增子序列【朴素dp、贪心+二分】!!!贪心+二分思路1893. 检查是否区域内所有整数都被覆盖【差分】差分1310. 子数组异或查询【前缀和、树状数组】304. 二维区域和检索 - 矩阵不可变【前缀和】给定一个二维矩阵 mat
2021-09-03 19:21:31
561
原创 leetcode 面试题 17.14. 最小K个数
文章目录面试题 17.14. 最小K个数【】全排序大根堆快排总结快排:面试题 17.14. 最小K个数【】设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))全排序class Solution {public: vector<
2021-09-03 16:18:29
115
原创 leetcode 307. 区域和检索 - 数组可修改【树状数组】
文章目录307. 区域和检索 - 数组可修改【树状数组】树状数组:单点修改+区间查询307. 区域和检索 - 数组可修改【树状数组】给你一个数组 nums ,请你完成两类查询,其中一类查询要求更新数组下标对应的值,另一类查询要求返回数组中某个范围内元素的总和。实现 NumArray 类:NumArray(int[] nums) 用整数数组 nums 初始化对象void update(int index, int val) 将 nums[index] 的值更新为 valint sumRange(i
2021-09-01 22:40:40
90
原创 leetcode 1109. 航班预订统计【差分+前缀和、线段树】
文章目录1109. 航班预订统计【差分+前缀和、线段树】差分 前缀和线段树总结1109. 航班预订统计【差分+前缀和、线段树】这里有 n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。请你返回一个长度为 n 的数组 answer,其中 ans
2021-09-01 20:58:55
117
原创 leetcoed 165. 比较版本号【双指针、递归、find、strstr、substr】
文章目录165. 比较版本号【双指针、递归、find、strstr、substr】递归双指针165. 比较版本号【双指针、递归、find、strstr、substr】给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.
2021-09-01 19:53:23
73
原创 leetcode 295. 数据流的中位数【优先队列】
295. 数据流的中位数【优先队列】中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:addNum(1)addNum(2)findMedian() -> 1.5addN
2021-08-29 21:08:32
121
原创 leetcode 1588. 所有奇数长度子数组的和【数学、前缀数组】
1588. 所有奇数长度子数组的和【数学、前缀数组】给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[1,4,2,5,3] = 15
2021-08-29 19:09:37
247
原创 leetcode高效制胜 13 生活趣题
文章目录807. 保持城市天际线807. 保持城市天际线在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。建筑物高度可以增加的最大总和是多少?例子:输入: grid = [[3,0,8,4],[2,4
2021-08-28 02:31:01
237
原创 leetcode 高效制胜 14 生活趣题
文章目录11. 盛最多水的容器 【双指针】42. 接雨水【动态规划,双指针,单调栈】双指针双指针动态规划11. 盛最多水的容器 【双指针】给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数
2021-08-27 20:12:42
69
原创 leetcode 12 生活趣题
文章目录121. 买卖股票的最佳时机【逻辑】122. 买卖股票的最佳时机 II【逻辑,动归,贪心】贪心动归贪心123. 买卖股票的最佳时机 III 【动归】动归188. 买卖股票的最佳时机 IV【动归】动归121. 买卖股票的最佳时机【逻辑】给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。
2021-08-27 14:44:12
107
原创 leetcode高效制胜 10+11 图
leetcode高效制胜 10 图1042. 不邻接植花787. K 站中转内最便宜的航班79. 单词搜索329. 矩阵中的最长递增路径1042. 不邻接植花有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] = [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。另外,所有花园 最多 有 3 条路径可以进入或离开.你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回 任一
2021-08-26 20:29:12
307
原创 leetcode 高效制胜 9 字符串搜索
leetcode 高效制胜 9 字符串搜索28. 实现 strStr()**3. KMP**524. 通过删除字母匹配到字典里最长单词1392. 最长快乐前缀(longestPrefix)**HASH:Rabin-Karp 字符串编码**28. 实现 strStr()实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle
2021-08-25 22:07:51
147
原创 leetcode 高效制胜 8 字符串
leetcode 高效制胜 8 字符串720. 词典中最长的单词3. 无重复字符的最长子串97. 交错字符串720. 词典中最长的单词给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入:words = [“w”,“wo”,“wor”,“worl”, “world”]输出:“world”解释:单词"world"可由"w",
2021-08-25 17:20:52
90
原创 leetcode 高效制胜 7 树
文章目录112. 路径总和112. 路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root = [1,2,3], targetSum = 5输出:
2021-08-25 15:15:32
64
原创 leetcode 787. K 站中转内最便宜的航班
787. K 站中转内最便宜的航班有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 pricei 抵达 toi。现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 k 站中转的路线,使得从 src 到 dst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 -1。示例 1:输入:n = 3, edges
2021-08-24 18:59:56
74
原创 leetcode高效制胜 6 数字
leetcode高效制胜 6 数字119. 杨辉三角 II279. 完全平方数(!!!)119. 杨辉三角 II给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: rowIndex = 3输出: [1,3,3,1]示例 2:输入: rowIndex = 0输出: [1]示例 3:输入: rowIndex = 1输出: [1,1]提示:0 <= rowIndex <= 33
2021-08-24 15:36:42
90
原创 leetcode 高效制胜5 堆栈
leetcode 高效制胜5 堆栈20. 有效的括号496. 下一个更大元素 I456. 132 模式(!!!)20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s =
2021-08-23 22:42:20
123
原创 leetcode 高效制胜 4 动态规划
leetcode 高效制胜 4 动态规划53. 最大子序和53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nu
2021-08-23 02:10:32
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人