09 2020 档案
摘要:LeetCode 701 二叉搜索树中的插入操作 问题描述: 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你
阅读全文
摘要:LeetCode 235 二叉搜索树的最近公共祖先 问题描述: 二叉搜索数性质 当前根节点值大于/等于p节点值 当前根节点值小于/等于q节点值 返回当前根节点 class Solution { public TreeNode lowestCommonAncestor(TreeNode root, T
阅读全文
摘要:LeetCode 113 路经总和II 问题描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 DFS+回溯 执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:39.6 MB, 在所有 Java 提交中击败了10.71%的用
阅读全文
摘要:LeetCode 617 合并二叉树 问题描述: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 递归
阅读全文
摘要:LeetCode 566 重塑矩阵 问题描述: 在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原始矩阵的所有元素以
阅读全文
摘要:LeetCode 283 移动零 问题描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 双指针 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:39 MB, 在所有 Java 提交中击败了79.88%的用户 c
阅读全文
摘要:LeetCode 242 有效的字母异位词 问题描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 哈希表 执行用时:4 ms, 在所有 Java 提交中击败了64.92%的用户 内存消耗:38.9 MB, 在所有 Java 提交中击败了73.89%的用户 cla
阅读全文
摘要:LeetCode 78 子集 问题描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 深度优先遍历 + 回溯 执行用时:1 ms, 在所有 Java 提交中击败了99.39%的用户 内存消耗:39 MB, 在所有 Java 提交中击败了
阅读全文
摘要:LeetCode 404 左叶子之和 问题描述: 计算给定二叉树的所有左叶子之和。 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:36.7 MB, 在所有 Java 提交中击败了84.78%的用户 递归 class Solution { public int s
阅读全文
摘要:LeetCode 5 最长回文子串 问题描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 动态规划 执行用时:209 ms, 在所有 Java 提交中击败了12.42%的用户 内存消耗:50.1 MB, 在所有 Java 提交中击败了5.01%的用户
阅读全文
摘要:LeetCode 300 最长上升子序列 问题描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 动态规划 执行用时:16 ms, 在所有 Java 提交中击败了24.49%的用户 内存消耗:36.5 MB, 在所有 Java 提交中击败了95.21%的用户 class Solution
阅读全文
摘要:LeetCode 47 全排列II 问题描述: 给定一个可包含重复数字的序列,返回所有不重复的全排列。 DFS 使用一个等长数组标记已使用元素 执行用时:2 ms, 在所有 Java 提交中击败了74.52%的用户 内存消耗:39.6 MB, 在所有 Java 提交中击败了40.76%的用户 /**
阅读全文
摘要:LeetCode 278 第一个错误的版本 问题描述: 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有
阅读全文
摘要:LeetCode 69 x的平方根 问题描述: 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 执行用时:2 ms, 在所有 Java 提交中击败了63.01%的用户 内存消耗:35.9 M
阅读全文
摘要:LeetCode 34 在排序数组中查找元素的第一个和最后一个位置 问题描述: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 执
阅读全文
摘要:LeetCode 105 从前序与中序遍历序列构造二叉树 问题描述: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树
阅读全文
摘要:LeetCode 328 奇偶链表 问题描述: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总
阅读全文
摘要:LeetCode 72 编辑距离 问题描述: 给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 执行用时:4 ms, 在所有 Java 提交中击败了99.63%
阅读全文
摘要:LeetCode 226 翻转二叉树 问题描述: 翻转一棵二叉树。 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:36.6 MB, 在所有 Java 提交中击败了16.33%的用户 递归 将当前根节点下两棵子树交换位置 将两棵子树进行翻转 class Solut
阅读全文
摘要:LeetCode 79单词搜索 问题描述: 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 执行用时:13 ms, 在所有 Java 提交中击败了
阅读全文
摘要:LeetCode 198 打家劫舍 问题描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置
阅读全文
摘要:LeetCode 504 七进制数 问题描述: 给定一个整数,将其转化为7进制,并以字符串形式输出。 执行用时:2 ms, 在所有 Java 提交中击败了45.34%的用户 内存消耗:37.2 MB, 在所有 Java 提交中击败了72.02%的用户 循环对base取余数 class Solutio
阅读全文
摘要:LeetCode 204 计数质数 问题描述: 统计所有小于非负整数 n 的质数的数量。 埃氏筛: 执行用时:15 ms, 在所有 Java 提交中击败了82.19%的用户 内存消耗:38.2 MB, 在所有 Java 提交中击败了61.06%的用户 class Solution { public
阅读全文
摘要:LeetCode 216 组合总数III 问题描述: 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 深度优先搜索DFS 执行用时:1 ms, 在所有 Java 提交中击败了
阅读全文
摘要:LeetCode 435 无重叠区间 问题描述: 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 贪心思想 执行用时:5 ms, 在所有 Java 提交中击败了
阅读全文
摘要:LeetCode 452 用最少数量的箭引爆气球 问题描述: 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。 一支弓箭可以
阅读全文
摘要:LeetCode 73 删除有序链表中的重复元素 问题描述: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 执行用时:1 ms, 在所有 Java 提交中击败了74.13%的用户 内存消耗:39.5 MB, 在所有 Java 提交中击败了46.17%的用户 class Soluti
阅读全文
摘要:LeetCode 24 反转链表 问题描述: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:40.2 MB, 在所有 Java 提交中击败了5.06%的用户 class Solution
阅读全文
摘要:LeetCode 77 组合 问题描述: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 **组合:**对于任意两个数,其组合形式只有一种 执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户 内存消耗:41.2 MB, 在所有 Java 提交中击
阅读全文
摘要:LeetCode 455 分发饼干 问题描述: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼
阅读全文
摘要:LeetCode 347 前K个高频元素 问题描述: 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 HashMap统计频率+桶排序 O(NlogN) 执行用时:16 ms, 在所有 Java 提交中击败了79.68%的用户 内存消耗:42.5 MB, 在所有 Java 提交中击败了28
阅读全文
摘要:LeetCode 124 二叉树最大路径和 问题描述: 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 执行用时:1 ms, 在所有 Java 提交中击败了99.87%的用户
阅读全文
摘要:基础概念 什么是进程、线程?并发问题的产生? 进程是程序在内存的执行体(包含源代码_指令、相关数据_操作数、文件) 线程是进程执行过程中的某个独立的功能模块,是最小的执行单元 同一个进程的线程、不同进程的线程间在执行过程中涉及到对于计算机资源的占有冲突,并发编程需要解决的问题是保证在同一时间间隔内运
阅读全文