随笔分类 -  LeetCode

上一页 1 ··· 7 8 9 10 11 12 13 下一页
摘要:小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。 1. 特解记忆化 阅读全文
posted @ 2022-06-22 23:51 失控D大白兔
摘要:给你旋转后的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 显然要是得复杂度为对数级,需要进行二分处理,首先思考如何使得问题规模变小 其实就是以下一个流程 将数组一分为二,其中一定有一个是有序的,另一个可能是有序,也能是部 阅读全文
posted @ 2022-06-22 03:41 失控D大白兔
摘要:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 ###1. 暴力递归 由于*匹配零个或多个前面元素,所以遍历是有方向的,从后往前递归判断,使问题规模缩小 class Solution 阅读全文
posted @ 2022-06-18 02:08 失控D大白兔
摘要:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 ###1. 辅助空间暴力法 将两数组合并,分奇偶取中位数 class Solution { public: double findMedianSortedArrays(vecto 阅读全文
posted @ 2022-06-17 22:55 失控D大白兔
摘要:给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 ###1. 暴力法 从后往前遍历,碰到0将所有元素后移,即再从后往前遍历一次 class Solution { public: void duplicateZeros(vector<int>& arr 阅读全文
posted @ 2022-06-17 02:59 失控D大白兔
摘要:###1. 静态区间合并 先按左边界排序,再两两比较合并 class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { if (intervals.size() == 0) return {} 阅读全文
posted @ 2022-06-13 03:31 失控D大白兔
摘要:如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的,那么该字符串是单调递增的 给你一个二进制字符串 s,你可以将任何 0 翻转为 1 或者将 1 翻转为 0 返回使 s 单调递增的最小翻转次数 ###1. 暴力法 遍历每一个位置,计算将该位置左侧全部置0 阅读全文
posted @ 2022-06-11 02:26 失控D大白兔
摘要:给定一个字符串 s,计算 s 的 不同非空子序列 的个数 ###1. 动态规划(记录位置去重) 设dp[i]为以i位置结尾的子序列数目,方便状态的转移 dp[i]= sum(dp[j]) ,j为上一次该字母出现位置到这一次字母出现的所有位置,从上一次出现位置开始主要为了去重 其实就是把该字母拼接到前 阅读全文
posted @ 2022-06-10 23:23 失控D大白兔
摘要:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数 ###1. 递归 题目其实就是要求我们在s中从前往后挑选字符来匹配子序列,得到最后的匹配次数 也就是成功匹配的递归分支 class Solution { public: int numDistinct(string s, 阅读全文
posted @ 2022-06-10 20:35 失控D大白兔 阅读(41) 评论(0) 推荐(0)
摘要:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 ###1. 暴力法 排序后遍历 class Solution { public: int longestConsecutive(vector<int>& nums) { //暴力 sort(nums 阅读全文
posted @ 2022-06-05 23:38 失控D大白兔
摘要:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 ###1. 动态规划 dp[i]表示以i结尾的最长长度 状态转移方程dp[i] = max(dp[j])+1 if num[j]<num[i] 边界条件 dp[0] = 1 时间复杂度为O(n2),即遍历一遍,同时对每个元素往前搜索一 阅读全文
posted @ 2022-06-05 20:25 失控D大白兔
摘要:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 思路跟快速幂差不多,通过不断累加减少使时间复杂度变成对数级,本质上是把其转换成二进制表示,这个二进制数就是商值 当然也可以使用多进制,但由于不能使用乘法,在32位限制的情况下,效率反 阅读全文
posted @ 2022-06-02 21:02 失控D大白兔
摘要:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 扩充(字符串相加) class Solution { public: string addStrings(string num1, string num2) { int 阅读全文
posted @ 2022-05-31 01:11 失控D大白兔
摘要:给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 ###1. 暴力求解 该问选择合适的暴力方式也有一定的难度,既要遍历所有可能的矩形,又要尽可能减少重复运算 可以考察以每个点为右下角的最大矩阵,即在二重循环遍历中,计算每个点所 阅读全文
posted @ 2022-05-28 14:12 失控D大白兔
摘要: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大白兔

上一页 1 ··· 7 8 9 10 11 12 13 下一页