随笔分类 - 每天一道LeetCode
摘要:题目描述 树可以看成是一个连通且无环的无向图。 给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edges[i] = [ai, bi] 表示图中在
阅读全文
摘要:题目描述 单词数组 words 的 有效编码 由任意助记字符串 s 和下标数组 indices 组成,且满足: words.length == indices.length 助记字符串 s 以 '#' 字符结尾 对于每个下标 indices[i] ,s 的一个从 indices[i] 开始、到下一个
阅读全文
摘要:题目描述 给你一个 R 行 C 列的整数矩阵 A。矩阵上的路径从 [0,0] 开始,在 [R-1,C-1] 结束。 路径沿四个基本方向(上、下、左、右)展开,从一个已访问单元格移动到任一相邻的未访问单元格。 路径的得分是该路径上的 最小 值。例如,路径 8 → 4 → 5 → 9 的值为 4 。 找
阅读全文
摘要:解题模板 def findSubArray(nums): N = len(nums) # 数组/字符串长度 left, right = 0, 0 # 双指针,表示当前遍历的区间[left, right],闭区间 sums = 0 # 用于统计 子数组/子区间 是否有效,根据题目可能会改成求和/计数
阅读全文
摘要:实现前缀树 知识点 Trie (发音为 "try") 或前缀树是一种树数据结构,用于检索字符串数据集中的键。 常见的应用场景有: 自动补全 拼写检查 IP路由(最长前缀匹配) 打字预测 示例 实现 Trie (前缀树) class TrieNode { private final int R = 2
阅读全文
摘要:练习题目 多数元素 求众数 II 以229题为例,给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素,尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 我们可以很容易想到用map来解决该问题,但是不满足其复杂度要求,改用摩尔投票法来解决。 摩尔投票
阅读全文
摘要:单调栈解决 Next Greater Number 一类问题 496. 下一个更大元素 I 给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。 nums1 中数字 x 的下一个更大元
阅读全文
摘要:题目描述 Given an integer array arr. You have to sort the integers in the array in ascending order by the number of 1's in their binary representation and
阅读全文
摘要:题目描述 Given an array A of integers, return true if and only if it is a valid mountain array. Recall that A is a mountain array if and only if: A.length
阅读全文
摘要:题目说明 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 示例 1: 输入:arr = [1,2,2,1,1,3] 输出:true 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1
阅读全文
摘要:题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 解决思路 双指针法解决,快指针先走n+1步,慢指针再走
阅读全文
摘要:题目描述 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 树中至少有 2 个节点。 题目描述 注意利用二叉搜索树的特点,中序遍历是有序的,而有序数组中两节点差的最小值即是任意两相邻节点差值的最小值。 中序遍历二叉搜索树时,使用pre记录前一个节点,比较当前节点与p
阅读全文
摘要:题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。
阅读全文
摘要:描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 思路 方法1 set 遍历数组,使用set保存值,如果set中已有该
阅读全文
摘要:描述 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点) 思路 C++版本 使用depth记录深度,每下潜一层vector开辟一个新的元素,使用递归先序遍历获取元素,保证左边节点在返回结果的左边。 /** * Definition for a binary t
阅读全文
摘要:描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [ 1, 1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target
阅读全文
摘要:描述 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bo
阅读全文
摘要:描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5
阅读全文
摘要:描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root =
阅读全文
摘要:描述 给定一个单词,你需要判断单词的大写使用是否正确。 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA"。 单词中所有字母都不是大写,比如"leetcode"。 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。 否则,我们定义这个单词没有正确使用
阅读全文