Leetcode
Leetcode
Ackerman2
这个作者很懒,什么都没留下…
展开
-
力扣中对常用数据结构ListNode TreeNode 增加打印和创建api
为方便本地ide调试力扣的链表、树类型的题。拓展增强了ListNode、TreeNode 类的定义from typing import Listclass ListNode: def __init__(self, val: int = 0, next_=None): self.val = val self.next = next_ @staticmethod def creatListNode(nums: List[int]):原创 2021-09-01 17:29:08 · 461 阅读 · 0 评论 -
LeetCode 124. 二叉树中的最大路径和
题目地址:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/在 codetop.cc 有同学指出字节跳动后端开发面试中出现过本题,而且在此基础上要求打印出路径来本文给出参考解答# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# sel原创 2021-07-24 16:23:00 · 891 阅读 · 11 评论 -
力扣(LeetCode)每日一题82.删除排序链表中的重复元素II
删除排序链表中的重复元素 II问题存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。示例 1: 输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5]示例 2: 输入:head = [1,1,1,2,3] 输出:[2,3]提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.v原创 2021-03-25 10:12:08 · 164 阅读 · 1 评论 -
力扣(LeetCode)每日一题115.不同的子序列
115.不同的子序列问题给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。(上箭头符原创 2021-03-17 10:34:05 · 204 阅读 · 3 评论 -
力扣(LeetCode)165. 比较版本号
165. 比较版本号问题给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修原创 2021-03-11 22:31:32 · 744 阅读 · 4 评论 -
建立打印LeetCode中的二叉树
在刷力扣题时遇到二叉树的问题时,建树较为麻烦,打印树更加是不方便。因为力扣中二叉树定义多为public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; }}再增加建树的成员方法 public static TreeNode creatABitTree(Integer[] nums) { if (nums.原创 2021-03-09 14:12:10 · 232 阅读 · 3 评论 -
力扣(LeetCode)113. 路径总和 II
113. 路径总和 II问题给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示例 3:输入:root原创 2021-03-09 09:31:21 · 292 阅读 · 2 评论 -
力扣(LeetCode)200. 岛屿数量
200. 岛屿数量问题给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:输入:gri原创 2021-03-08 21:39:23 · 1229 阅读 · 0 评论 -
力扣(LeetCode)每日一题338. 比特位计数
338. 比特位计数问题给定一个非负整数 num。对于0 ≤ i ≤ num 范围中的每个数字i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++原创 2021-03-03 08:57:25 · 129 阅读 · 0 评论 -
力扣(LeetCode)每日一题304.二维区域和检索 - 矩阵不可变
304.二维区域和检索 - 矩阵不可变问题给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1),右下角为 (row2, col2)。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7],原创 2021-03-02 08:41:55 · 153 阅读 · 0 评论 -
力扣(LeetCode)每日一题1052 爱生气的书店老板
1052 爱生气的书店老板问题今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第i分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X分钟不生气,但却只能使用一次。请你返回这一天营原创 2021-02-23 22:14:47 · 126 阅读 · 0 评论 -
力扣(LeetCode)每日一题1438绝对差不超过限制的最长连续子数组
1438. 绝对差不超过限制的最长连续子数组题目描述给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2 解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |8-2| = 6 > 4. [8,2,4] 最原创 2021-02-21 23:24:49 · 441 阅读 · 0 评论 -
力扣(LeetCode)每日一题697数组的度
697. 数组的度问题描述给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3原创 2021-02-20 15:00:30 · 151 阅读 · 0 评论 -
力扣(LeetCode)每日一题566. 重塑矩阵
566. 重塑矩阵问题在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入: nums = [[1,2], [3,4]]r = 1, c = 4输出: [[1,2原创 2021-02-17 10:39:16 · 151 阅读 · 2 评论 -
力扣(LeetCode)765情侣牵手
765. 情侣牵手恰逢2.14情人节,力扣每日一题出了个这种题。让我这单身狗来会会这个题问题N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 一次交换可选择任意两人,让他们站起来交换座位。人和座位用0到2N-1 的整数表示,情侣们按顺序编号,第一对是(0, 1),第二对是(2, 3),以此类推,最后一对是 (2N-2, 2N-1)。这些情侣的初始座位 row[i] 是由最初始坐在第i个座位上的人决定的。示例 1:输入: ro原创 2021-02-14 21:08:51 · 197 阅读 · 2 评论 -
力扣(LeetCode)236.二叉树的最近公共祖先
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,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:原创 2021-01-13 10:50:21 · 118 阅读 · 0 评论 -
LeetCode(力扣)1706-球会落何处
1706. 球会落何处问题用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。原创 2020-12-28 19:29:18 · 143 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
剑指 Offer 35. 复杂链表的复制QUESTION请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输原创 2020-10-15 10:19:08 · 83 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径
剑指 Offer 34. 二叉树中和为某一值的路径剑指 Offer 34. 二叉树中和为某一值的路径问题解答剑指 Offer 34. 二叉树中和为某一值的路径问题输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \原创 2020-10-14 13:42:34 · 96 阅读 · 0 评论 -
力扣19题删除链表的倒数第N个节点
问题给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?链接:https://leetcode-cn.com/problems/...原创 2020-01-04 11:40:43 · 200 阅读 · 0 评论 -
力扣79题单词搜索+深度优先搜索
问题给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCE...原创 2020-01-03 18:56:39 · 224 阅读 · 0 评论 -
leetcode116--填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{"$id":"1","left":{"$id"原创 2020-07-31 16:15:16 · 130 阅读 · 0 评论 -
力扣17题-电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。链接:https://leet...原创 2019-12-29 16:43:38 · 390 阅读 · 0 评论 -
力扣141题-环形链表-python
文章目录题目描述题解方法一:哈希表思路算法代码复杂度分析方法二:双指针思路算法代码复杂的分析完整代码题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/l...原创 2019-11-29 14:32:28 · 346 阅读 · 0 评论