franki Blog

make a small progress every day

leetcode 74题

leetcode 74题 搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 3 输出:true 示例 2 ...

leetcode 35题

leetcode 35题 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1 输入: [1,3,5,6], 5 输出: 2 示例 2 输入: [1,3,5,6], 2 输出: 1 示例 3 输入: [1,3,5,6], 7 输出: 4 示例 4 ...

实现最大堆

思路 堆的操作:insert、poll、peek insert: 先插入到最后一个节点,然后进行heapifyUp操作,这个过程会去比较当前节点的值与父节点的值,如果前者较大,会交换彼此的位置,并且更换index的位置为父节点的index,重复此过程,得到最大堆 poll: 删除最后一个节点,并且把根结点替换为刚才删除的节点。从上到下堆化,默认从根节点...

leetcode 3题

leetcode 3题 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3 输入: "pwwkew"...

leetcode 987题

leetcode 987题 二叉树的垂序遍历 给定二叉树,按垂序遍历返回其结点值。 对位于 (X, Y) 的每个结点而言,其左右子结点分别位于 (X-1, Y-1) 和 (X+1, Y-1)。 把一条垂线从 X = -infinity 移动到 X = +infinity ,每当该垂线与结点接触时,我们按从上到下的顺序报告结点的值( Y 坐标递减)。 如果两个结点位置相同,则首先报告的...

leetcode 347题

leetcode 347题 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2 输入: nums = [1], k = 1 输出: [1] 思路 利用小顶堆,前k个数就是小顶堆里面维护的数据 具体操作步骤: 先遍历数据,用一个map记...

leetcode 513题

leetcode 513题 找树左下角的值 给定一个二叉树,在树的最后一行找到最左边的值。 示例 输入: 2 / \ 1 3 输出: 1 示例 输入: 1 / \ 2 3 / / \ 4 5 6 / 7 输出: 7 思路 1 利用宽度优先搜索(...

leetcode 129题

leetcode 129题 求根到叶子节点数字之和 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 来源:力扣(LeetCode) 链接:https://leetcode-cn.c...

leetcode 104题

leetcode 104题 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 思路 使用广度优先搜索,...

leetcode 100题

leetcode 100题 相同的树 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3] 输出: true 来源...