随笔分类 - 刷题笔记
发表于 2022-05-08 20:59阅读:28评论:0推荐:0
摘要:题目表述 给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。 注意: n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。 root 的 子树 由 root 和它的所有后代组成。 示例 1: **输入:*
阅读全文 »
发表于 2022-05-07 23:31阅读:27评论:0推荐:0
摘要:题目表述 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5
阅读全文 »
发表于 2022-05-07 23:24阅读:31评论:0推荐:0
摘要:题目表述 节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。 示例: 输入: n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2 输出: true DFS、BFS 根据graph构建邻接表
阅读全文 »
发表于 2022-05-07 23:13阅读:22评论:0推荐:0
摘要:题目表述 给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。 示例: 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]
阅读全文 »
发表于 2022-04-26 09:38阅读:28评论:0推荐:0
摘要:题目表述 给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。 示例: 输入: words = ["abcw","baz","foo","bar","xtf
阅读全文 »
发表于 2022-04-25 21:06阅读:31评论:0推荐:0
摘要:题目表述 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。 示例1: 输入: s = "leetcode" 输出: false 位运算 题目比较简单,可以采用数组、map、set等用来作为辅助空间解决这道题。但是还有更好的解决办法。 可以使用一个int类型的变量来存储string数组中所出
阅读全文 »
发表于 2022-04-23 23:49阅读:40评论:0推荐:0
摘要:题目表述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 二分查找 从题目可以看出,矩阵的每一行是递增的,每行的第一个元素大于前一行的最后一个元素,所以每列也是递增的。 对矩阵最后一
阅读全文 »
发表于 2022-04-23 23:36阅读:20评论:0推荐:0
摘要:题目表述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 模拟 首先初始化矩阵的四个边界(上下左右) 然后依次遍历最顶行(边界更新,highindex + 1)->最右列(边界更新,rightIndex - 1)->最底行(边界更新,low - 1)
阅读全文 »
发表于 2022-04-23 23:27阅读:32评论:0推荐:0
摘要:题目表述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 广度优先搜索 首先让根节点入队列,然后遍历队列。 每次循环开始,计算出队列大小,当前的队列大小size就是每一层的节点数。循环这size个节点,依次弹出队列,然后判断当前节点的左右节点时候为
阅读全文 »
发表于 2022-04-20 19:59阅读:31评论:0推荐:0
摘要:题目表述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 扫描 该题可以直接用双层for循环暴力解决,时间复杂度为0(nm),也可以用for循环嵌套二分查找,时间复杂度为0(n
阅读全文 »
发表于 2022-04-20 19:51阅读:32评论:0推荐:0
摘要:题目表述 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] **输出:**
阅读全文 »
发表于 2022-04-19 20:21阅读:26评论:0推荐:0
摘要:题目表述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。 示例:
阅读全文 »
发表于 2022-04-19 20:10阅读:19评论:0推荐:0
摘要:题目表述 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例: 输入: grid = [ ["1","1","1","1","0"]
阅读全文 »
发表于 2022-04-19 19:56阅读:38评论:0推荐:0
摘要:题目表述 给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。 返回一个整数数组 answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 j 之间的 距离 为
阅读全文 »
发表于 2022-04-18 13:08阅读:29评论:0推荐:0
摘要:题目表述 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例: **输入:**nums = [2,3,1,1,4] **输出:**true **解释:**可以先跳 1 步,从下标 0 到达下标
阅读全文 »
发表于 2022-04-18 13:06阅读:58评论:0推荐:0
摘要:题目表述 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left ⇐ right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 头插法 头插法也可以叫穿针引线法。可以初始化两个指针,fast 和 slow。slow与fast差一个节
阅读全文 »
发表于 2022-04-18 13:06阅读:38评论:0推荐:0
摘要:题目表述 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例: **输入:**x = 4 **输出:**2 二分法 二分
阅读全文 »
发表于 2022-04-17 22:52阅读:24评论:0推荐:0
摘要:题目表述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 输出: True 说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)
阅读全文 »
发表于 2022-04-17 19:19阅读:22评论:0推荐:0
摘要:题目表述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例: 归并排序 归并排序本质,递归加合并两个有序链表。 利用快慢指针,找到链表中点,以中点为边界,将链表拆分成为两个子链表。 对两个子链表分别进行排序。 将两个排序后的子链表合并,得到完整的排序后的链表。可以使用
阅读全文 »
发表于 2022-04-17 11:41阅读:24评论:0推荐:0
摘要:题目表述 如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。 偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增 奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序
阅读全文 »