随笔分类 - LeetCode / LeetCode题解
熟悉算法
摘要:n 位格雷码序列 是一个由 2n 个整数组成的序列,其中: 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1) 第一个整数是 0 一个整数在序列中出现 不超过一次 每对 相邻 整数的二进制表示 恰好一位不同 ,且 第一个 和 最后一个 整数的二进制表示 恰好一位不同 给你一个整
阅读全文
posted @ 2022-05-27 16:30
失控D大白兔
摘要:###1.递归判断 从上往下递归的时候,使左边所有子树都小于根节点,右边所有子树都大于根节点 那么对于左子树要传入一个上界,对右子树传入一个下界 为了同一操作,对左右子树既传入上界也传入下界,并且上下界值会随着节点的更新发生改变,范围逐渐收缩 class Solution { public: boo
阅读全文
posted @ 2022-05-27 14:33
失控D大白兔
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 在遍历过程中,左边的很多信息对右边仍然有用处,不是单纯的求一个左侧最大高度或者最大面积 所以无法用动态规划来求解,而且对于每一个待考虑的矩阵,对其扩张的时候,有用
阅读全文
posted @ 2022-05-27 02:21
失控D大白兔
摘要:给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 对于最优问题计算,考虑用动态规划,这里dp[i][j]设为 为word1前i个字符和word2前j个字符的最少操
阅读全文
posted @ 2022-05-26 19:52
失控D大白兔
摘要:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 思路:对于是否可行问题考虑用回溯法,递归s串中的下标,同时遍历可选字典数组,进行匹配,匹配失败选择其他项,防止
阅读全文
posted @ 2022-05-26 19:47
失控D大白兔
摘要:把字符串 s 看作是 “abcdefghijklmnopqrstuvwxyz” 的无限环绕字符串 现在给定另一个字符串 p 返回 s 中 唯一 的 p 的 非空子串 的数量 看似是两个个字符串进行匹配的题目,实际上还是评估一个串,因为无限环绕串满足特定规律 所以只需提取出字符串p中符合规律的子串即可
阅读全文
posted @ 2022-05-25 18:59
失控D大白兔
摘要:给定一个m x n二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用 ###1
阅读全文
posted @ 2022-05-25 00:27
失控D大白兔
摘要:给你一个无重复元素的整数数组candidates和一个目标整数target,找出 candidates中可以使数字和为目标数 target的所有不同组合,并以列表形式返回,你可以按任意顺序 返回这些组合 candidates中的同一个数字可以无限制重复被选取,如果至少一个数字的被选数量不同则两种组合
阅读全文
posted @ 2022-05-22 20:20
失控D大白兔
摘要:给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个表达式 返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目 ###1. 回溯法(全遍历) public: int res = 0; int f
阅读全文
posted @ 2022-05-22 17:30
失控D大白兔
摘要:实现 pow(x,n) ,即计算 x 的 n 次幂函数 ###1. 递归分治 先考虑指数正数的情况 求x的n次幂函数可以转换成求两个⌊n/2⌋的幂函数之积,由于两个是相同的,运算时间直接减少一半 通过递归使得求解时间成为对数级,需要注意的是分别讨论n的奇偶性 由于使用递归具有一定空间复杂度 clas
阅读全文
posted @ 2022-05-20 17:46
失控D大白兔
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树 平衡二叉树满足子树都为平衡二叉树且左右子树高度差的绝对值小于1 ###1. 平衡性和高度判断分离 从上往下对每一个节点判断其左右子树的高度是否满足要求 以及其左右子树是否是平衡二叉树 时间复杂度为O(n2) 可以发现对每个节点进行最大高度计算时,其实跟其
阅读全文
posted @ 2022-05-20 00:14
失控D大白兔
摘要:###1. 最少的硬币个数 给你一个整数数组 coins,表示不同面额的硬币;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的**最少的硬币个数** 。如果没有任何一种硬币组合能组成总金额,返回-1 。 你可以认为每种硬币的数量是无限的。 跟完全平方数解法完全一致,不过完全平方
阅读全文
posted @ 2022-05-19 14:54
失控D大白兔
摘要:###动态规划 给你一个整数n,返回和为n的完全平方数的最少数量 。 完全平方数是一个整数,其值等于另一个整数的平方,换句话说,其值等于一个整数自乘的积。 例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 思路: 回溯法常用来遍历输出全部路径,以及解决可达性问题 对于这种最优问题
阅读全文
posted @ 2022-05-19 14:43
失控D大白兔
摘要:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 ###1. 暴力法(超时) 三重循环(列所有数组) class Solution { public: int maxSubArray(vector<int>& nu
阅读全文
posted @ 2022-05-18 21:07
失控D大白兔
摘要:一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表stones(用单元格序号升序表示,请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时,青蛙默认已站在第一块石子上
阅读全文
posted @ 2022-05-18 17:17
失控D大白兔
摘要:你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手 。 每一回合,轮到的人拿掉 1-3块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 tru
阅读全文
posted @ 2022-05-17 00:51
失控D大白兔
摘要:###1. 两两比较 把当前最长公共前缀与每一个字符串比较,并进行更新减小 class Solution { public: string longestCommonPrefix(vector<string>& strs) { if (!strs.size()) { return ""; } str
阅读全文
posted @ 2022-05-16 16:52
失控D大白兔
摘要:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 ###1. 暴力双循环 双指针动态维持更新一个无重复子串,每移动一次右指针,判断新加入字符是否在子串中存在 若存在,则找出其在子串中位置,并更新左指针位置,时间复杂度O(n2) class Solution { public: int
阅读全文
posted @ 2022-05-16 09:46
失控D大白兔
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 ####1. 缩小问题规模 注意到旋转整个图像,可以看做由行到列,由列到行,但由于不能使用辅助数组,翻转行会破
阅读全文
posted @ 2022-05-14 21:53
失控D大白兔
摘要:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 ###1. 遍历递归 遍历每一个位置,如果存在,则递归其周围区域,并使总区域数加一,
阅读全文
posted @ 2022-05-14 17:25
失控D大白兔

浙公网安备 33010602011771号