franki Blog

make a small progress every day

leetcode 567题

leetcode 567 字符串的排列 给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。 换句话说,s1 的排列之一是 s2 的 子串 。 示例1 输入:s1 = "ab" s2 = "eidbaooo" 输出:true 解释:s2 包含 s1 的排列之一 ("ba"). 示例2 输入:s1=...

leetcode 563题

leetcode 563 反转字符串中的单词 III 给你一个二叉树的根节点 root ,计算并返回 整个树 的坡度 。 一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。 整个树 的坡度就是其所有节点的坡度之和。 示例1 输入:root = [1,...

leetcode 557题

leetcode 557 反转字符串中的单词 III 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例1 输入:s = "Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL tsetnoc" 示例2 输入: s = "God Ding" 输出:"doG gniD" 思路 ...

线段树

线段树实现及应用 线段树的定义,本质是一颗平衡二叉搜索树,也就是每个节点的左右节点高度不超过1,并且左节点的值小于根节点,根节点的值小于右节点 线段树的操作包括:创建线段树、搜索、查询 下标 如果下标从0开始,那么左节点就是 2 * i + 1,右节点就是 2 * i + 2,父节点就是 (i - 1) / 2 如果小标从1开始,那么左节点就是 2 * i,右节点就是 2 * i ...

leetcode 541题

leetcode 541 反转字符串 II 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 示例1 输入:s = "abcdefg", k = 2 输出:"bacdfeg" ...

leetcode 532题

leetcode 532 数组中的 k-diff 数对 给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。 k-diff 数对定义为一个整数对 (nums[i], nums[j]) ,并满足下述全部条件: 0 <= i, j < nums.length i != j nums[i] - num...

leetcode 526题

leetcode 526 优美的排列 假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm(下标从 1 开始),只要满足下述条件 之一 ,该数组就是一个 优美的排列 : perm[i] 能够被 i 整除 i 能够被 perm[i] 整除 给你一个整数 n ,返回可以构造的 优美排列 的 数量 。 示例1 输入:n = 2 输出:2 解释: 第 1 个优美的排列是 [...

leetcode 524题

leetcode 524 通过删除字母匹配到字典里最长单词 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。 ...

leetcode 515题

leetcode 515 找树左下角的值 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1 输入: root = [1,3,2,5,3,null,9] 输出: [1,3,9] 示例2 输入: root = [1,2,3] 输出: [1,3] 思路 同样使用 bfs 的思想,把每一层的最大值用 map 记录,tree 遍历完毕之后,再去获取所有...

leetcode 513题

leetcode 513 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例1 输入: root = [2,1,3] 输出: 1 示例2 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路 使用 dfs 便可得到结果 代码 /** * @param ...