- 博客(96)
- 收藏
- 关注
原创 leetcode每日一题之字母大小写全排列
给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。这里对于数字和字符串的判断取了个巧,如果字符的大小写相等就认为是数字,否则为字母。返回 所有可能得到的字符串集合。以 任意顺序 返回输出。2、如果是字母,则每一个结果拼接一个大写字母和一个小写字母。1、如果是数字,则直接拼接到每一个结果字符串后面。思路:遍历字符串,对于每个字符进行判断。
2022-10-30 14:34:01 382
原创 替换ifelse你有更简单的方式
有时候乍一看,我们能够一瞬间想到代码的解决方式,但是这个时候要想一想自己的代码是不是足够优雅,是不是会有更简单的方式来实现,这样不停的锻炼,一方面能够提高自己代码编写能力,也能提高自己的逻辑思维能力。
2022-09-03 23:58:47 376
原创 Scss实现Ant design色板生成算法
前言努力学习的我,最近在看Ant Design,然后不经意间看到了Ant Design对于色彩的设计,可以通过一种主色调生成其他衍生色,而且附上了Ant Design色板生成算法演进之路这篇文章,大致意思是从简单的百分比,到贝塞尔曲线,到最终的使用HSV实现色板的过程,有兴趣的小伙伴可以自行研究吧。由于ant design使用的是less,而我平时开发使用的是sass,所以产生了使用sass实现该算法的想法。ant design算法@functions: ~`(function() { var
2022-05-07 20:28:57 930
原创 leetcode每日一题之最富有客户的资产总量
1672、最富有客户的资产总量给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例1:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 = 6
2022-04-14 00:27:34 135
原创 leetcode每日一题之O(1)时间内插入、删除和获取元素
380、O(1)时间内插入、删除和获取元素实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false 。int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中
2022-04-13 08:32:39 358
原创 leetcode每日一题之写字符串需要的行数
806、写字符串需要的行数我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表 ‘b’ 需要的单位,…, widths[25] 代表 ‘z’ 需要的单位。现在回答两个问题:至少多少行能放下S,以及最后一行使用的宽
2022-04-12 08:19:19 128
原创 leetcode每日一题之统计各位数字都不同的数字个数
357、统计各位数字都不同的数字个数给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。示例1:输入:n = 2输出:91解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。 示例2:输入:n = 0输出:1思路:这道题一看是一个组合的问题,从10个数中选出数字作为每个数位的值,组成数字的个数。那么这里就需要考虑首位为0的情况,由于数字高位为0是不
2022-04-11 22:56:13 584
原创 leetcode每日一题之唯一的摩尔斯密码词
804、唯一的摩尔斯密码词国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:‘a’ 对应 “.-” ,‘b’ 对应 “-…” ,‘c’ 对应 “-.-.” ,以此类推。为了方便,所有 26 个英文字母的摩尔斯密码表如下:[“.-”,“-…”,“-.-.”,“-…”,“.”,“…-.”,“–.”,“…”,“…”,“.—”,“-.-”,“.-…”,“–”,“-.”,“—”,“.–.”,“–.-”,“.-.”,“…”,“-”,“…-”,“…-”,“.–
2022-04-10 14:23:23 788
原创 leetcode每日一题之到达终点
780、到达终点给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。示例1:输入: sx = 1, sy = 1, tx = 3, ty = 5输出: true解释:可以通过以下一系列转换从起点转换到终点:(1, 1) -> (1, 2)(1, 2) -> (3, 2)(3, 2) -&g
2022-04-09 21:29:53 242
原创 leetcode每日一题之最小高度树
310、最小高度树树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h))
2022-04-06 17:20:05 413
原创 leetcode每日一题之二进制表示中质数个计算置位
762、二进制表示中质数个计算置位给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。计算置位位数 就是二进制表示中 1 的个数。例如, 21 的二进制表示 10101 有 3 个计算置位。示例1:输入:left = 6, right = 10输出:4解释:6 -> 110 (2 个计算置位,2 是质数)7 -> 111 (3 个计算置位,3 是质数)9 -> 1001 (2 个计算置位
2022-04-05 09:13:23 233
原创 leetcode每日一题之区域和检索-数组可修改
404、区域和检索-数组可修改给你一个数组 nums ,请你完成两类查询。其中一类查询要求 更新 数组 nums 下标对应的值另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的 和 ,其中 left <= right实现 NumArray 类:NumArray(int[] nums) 用整数数组 nums 初始化对象void update(int index, int val) 将 nums[index] 的值 更新 为 val
2022-04-04 21:47:46 601
原创 leetcode树之打家劫舍
1123、最深叶节点的最近公共祖先给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先 。回想一下:叶节点 是二叉树中没有子节点的节点树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d+1如果我们假定 A 是一组节点 S 的 最近公共祖先,S 中的每个节点都在以 A 为根节点的子树中,且 A 的深度达到此条件下可能的最大值。示例1:输入:root = [3,5,1,6,2,0,8,null,null,7,4]输出:[2,7,4]示例2
2022-04-04 09:31:23 480
原创 leetcode树之距离为K的结点
文章目录863、二叉树中所有距离为K的结点1123、最深叶节点的最近公共祖先863、二叉树中所有距离为K的结点给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 k 。返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。示例1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2输出:[7,4,1]解释:所求结点为与目标结点(值为 5)距离为 2 的结点,
2022-04-04 00:21:01 391
原创 leetcode每日一题之寻找比目标字母大的最小字母
744、寻找比目标字母大的最小字母给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’示例1:输入: letters = ["c", "f", "j"],target = "a"输出: "c"示例2:输入: letters = ["
2022-04-03 10:55:54 144
原创 leetcode树之二叉树分裂子树
文章目录1145、二叉树着色游戏1339、分裂二叉树的最大乘积1145、二叉树着色游戏有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。游戏从「一号」玩家开始(「一号」玩家为红色,「二号」玩家为蓝色),最开始时,「一号」玩家从 [1, n] 中取一个值 x(1 <= x <= n);「二号」玩家也从 [1, n] 中取一个值 y(1 <= y <= n)且
2022-04-03 00:28:59 1484
原创 leetcode树之从二叉树一个节点到另一个节点每一步
2096、从二叉树一个节点到另一个节点每一步方向给你一棵 二叉树 的根节点 root ,这棵二叉树总共有 n 个节点。每个节点的值为 1 到 n 中的一个整数,且互不相同。给你一个整数 startValue ,表示起点节点 s 的值,和另一个不同的整数 destValue ,表示终点节点 t 的值。请找到从节点 s 到节点 t 的 最短路径 ,并以字符串的形式返回每一步的方向。每一步用 大写 字母 ‘L’ ,‘R’ 和 ‘U’ 分别表示一种方向:‘L’ 表示从一个节点前往它的 左孩子 节点。‘R’
2022-04-02 22:42:46 767
原创 leetcode树之统计最高分的节点数目
2049、统计最高分的节点数目给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于节点 0 是根,所以 parents[0] == -1 。一个子树的 大小 为这个子树内节点的数目。每个节点都有一个与之关联的 分数 。求出某个节点分数的方法是,将这个节点和与它相连的边全部 删除 ,剩余部分是若干个 非空 子树,这个节点的 分数 为所有这些子树
2022-04-02 20:29:59 249
原创 leetcode每日一题之强密码检验器
420、强密码检验器如果一个密码满足下述所有条件,则认为这个密码是强密码:由至少 6 个,至多 20 个字符组成。至少包含 一个小写 字母,一个大写 字母,和 一个数字 。同一字符 不能 连续出现三次 (比如 “…aaa…” 是不允许的, 但是 “…aa…a…” 如果满足其他条件也可以算是强密码)。给你一个字符串 password ,返回 将 password 修改到满足强密码条件需要的最少修改步数。如果 password 已经是强密码,则返回 0 。在一步修改操作中,你可以:插入一个字
2022-04-02 16:57:23 491
原创 leetcode树之在受污染的二叉树中查找元素
1261、在受污染的二叉树中查找元素给出一个满足下述规则的二叉树:root.val == 0如果 treeNode.val == x 且 treeNode.left != null,那么 treeNode.left.val == 2 * x + 1如果 treeNode.val == x 且 treeNode.right != null,那么 treeNode.right.val == 2 * x + 2现在这个二叉树受到「污染」,所有的 treeNode.val 都变成了 -1。请你先还原
2022-04-01 23:35:56 554
原创 leetcode树之好叶子节点
1448、统计二叉树中好节点的数目给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。示例1:输入:root = [3,1,4,3,null,1,5]输出:4示例2:输入:root = [3,3,null,4,2]输出:3示例3:输入:root = [1]输出:1思路:从根节点到当前节点,没有任何节点的值大于当前节点的值,只需要在递归的时候传递根节点到当前节点的最大值即可,使
2022-04-01 21:31:54 672
原创 leetcode每日一题之二倍数对数组
954、二倍数对数组给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 “对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 * arr[2 * i]” 时,返回 true;否则,返回 false。示例1:输入:arr = [3,1,3,6]输出:false示例2:输入:arr = [2,1,2,6]输出:false示例3:输入:arr = [4,-2,2,-4]输出:true思路:判断整个数组是
2022-04-01 13:59:26 306
原创 leetcode树之删除
文章目录1110、删点成林1325、删除给定值的叶子结点1110、删点成林给出二叉树的根节点 root,树上每个节点都有一个不同的值。如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。返回森林中的每棵树。你可以按任意顺序组织答案。示例1:输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]输出:[[1,2,null,4],[6],[7]]示例2:输入:root = [1,2,4,null,
2022-03-31 20:17:32 231
原创 leetcode每日一题之自除数
728、自除数自除数 是指可以被它包含的每一位数整除的数。例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。自除数 不允许包含 0 。给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。示例1:输入:left = 1, right = 22输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]示例2:输入:lef
2022-03-31 11:26:17 234
原创 leetcode每日一题之找到处理最多请求的服务器
1606、找到处理最多请求的服务器你有 k 个服务器,编号为 0 到 k-1 ,它们可以同时处理多个请求组。每个服务器有无穷的计算能力但是 不能同时处理超过一个请求 。请求分配到服务器的规则如下:第 i (序号从 0 开始)个请求到达。如果所有服务器都已被占据,那么该请求被舍弃(完全不处理)。如果第 (i % k) 个服务器空闲,那么对应服务器会处理该请求。否则,将请求安排给下一个空闲的服务器(服务器构成一个环,必要的话可能从第 0 个服务器开始继续找下一个空闲的服务器)。比方说,如果第 i 个服
2022-03-30 12:12:12 910
原创 leetcode树之二叉树寻路
文章目录1104、二叉树寻路1372、二叉树中的最长交错路径1457、二叉树中的伪回文路径1104、二叉树寻路在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。示例1:输入:
2022-03-30 10:08:08 264
原创 leetcode树之序列化二叉树
文章目录449、序列化和反序列化二叉搜索树剑指Offer37、序列化二叉树449、序列化和反序列化二叉搜索树序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。编码的字符串应尽可能紧凑。示例1:输入:root = [2,1,3
2022-03-29 21:50:55 366
原创 leetcode每日一题之考试的最大困扰度
2024、考试的最大困扰度一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:每次操作中,将问题的正确答案改为 ‘T’ 或者
2022-03-29 11:50:31 332
原创 leetcode树之递归
文章目录687、最长同值路径979、在二叉树中分配硬币1026、节点与其祖先之间的最大值687、最长同值路径给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。两个节点之间的路径长度 由它们之间的边数表示。示例1:输入:root = [5,4,5,1,1,5]输出:2示例2:输入:root = [1,4,5,4,4,5]输出:2思路:对于树这种找路径的题,一般使用递归来做,假设左,右子树已经处理好,这个
2022-03-28 21:11:23 133
原创 leetcode每日一题之交替位二进制数
693、交替位二进制数给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。示例1:输入:n = 5输出:true解释:5 的二进制表示是:101示例2:输入:n = 7输出:false解释:7 的二进制表示是:111.示例3:输入:n = 11输出:false解释:11 的二进制表示是:1011.思路:看到位,这里很容易想到位运算,记录位运算的结果,然后比较位运算是否与上次计算的相反。class Soluti
2022-03-28 09:30:31 453
原创 leetcode树之翻转二叉树
文章目录951、翻转等价二叉树971、翻转二叉树以匹配先序遍历951、翻转等价二叉树我们可以为二叉树 T 定义一个 翻转操作 ,如下所示:选择任意节点,然后交换它的左子树和右子树。只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转 等价 于二叉树 Y。这些树由根节点 root1 和 root2 给出。如果两个二叉树是否是翻转 等价 的函数,则返回 true ,否则返回 false 。示例1:输入:root1 = [1,2,3,4,5,6,null,null,null,7,
2022-03-28 08:40:12 424
原创 leetcode树之二叉树剪枝
文章目录669、修剪二叉搜索树814、二叉树剪枝669、修剪二叉搜索树给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例1:输入:root = [1,0,2], low = 1,
2022-03-27 22:38:37 820
原创 leetcode树之验证二叉树
331、验证二叉树的前序序列化序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。保证 每个以逗号分隔的字符或为一个整数或为一个表示 null 指针的 ‘#’ 。你可以认为输入格式总是有效的例如它永远不会包含两个连续的逗号,比如 “1,3” 。注意:不允许重建树。示例1:输入: preo
2022-03-27 21:42:04 727
原创 leetcode树之完全二叉树
文章目录222、完全二叉树的节点个数919、完全二叉树插入器222、完全二叉树的节点个数给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例1:输入:root = [1,2,3,4,5,6]输出:6示例2:输入:root = []输出:0示例3:输入:root = [1
2022-03-27 19:29:53 747
原创 leetcode每日一题之找出缺失的观测数据
2028、找出缺失的观测数据现有一份 n + m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n + m 次投掷数据的 平均值 。给你一个长度为 m 的整数数组 rolls ,其中 rolls[i] 是第 i 次观测的值。同时给你两个整数 mean 和 n 。返回一个长度为 n 的数组,包含所有缺失的观测数据,且满足这 n + m 次投掷的 平均值 是 mean 。如果存在多组符合要求的答案,
2022-03-27 11:33:34 101
原创 leetcode树之二叉搜索树2
230、二叉搜索树中第K小的元素给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。示例1:输入:root = [3,1,4,null,2], k = 1输出:1示例2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3思路:中序遍历二叉搜索树,从中找到第k小的元素class Solution: def kthSmallest(self, root: Optional
2022-03-26 21:09:53 69
原创 leetcode树之层级遍历应用
513、找树左下角的值给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。示例1:输入: root = [2,1,3]输出: 1示例2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7思路:这道题需要找到最底层最左边节点的值,立马就想到层序遍历,然后取最后一层的第一个结点的值即可class Solution: def findBottomLeftValue(self, root: Opt
2022-03-26 17:45:18 533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人