文章分类 - leetcode刷题
摘要:图需要注意的点 图的dfs遍历有两种写法,一种是进去之前就给要进去的点标记,另一种是进去dfs函数之后再进行标记 图的bfs(层序遍历)和树的层序不一样的地方在于,树是需要记录每一层的个数的,所以有一个记录的操作。 有一些题目看似不是图的题目,但是转换一下角度就会发现是理解的问题。
阅读全文
摘要:滑动窗口 模板:int fast = 0, slow = 0; for(; fast < n; fast++) { 将fast对应的值不断放到窗口中 while(极值条件) { 将窗口放到最小,记录答案 } } 解释: 两个循环:第一个是不断的加入窗口,另一个是不断减少窗口 回溯 需要理解的两个重点
阅读全文
摘要:链表知识点总结 注意虚拟头节点的使用。 删除节点的时候需要定位到该节点的上一个节点进行操作(所以操作如果存在操作头节点的逻辑,那么虚拟头节点就能作为头节点的上一个节点对其操作) 链表的结尾节点默认就是NULL。 删除节点的时候最好能够释放空间,避免内存泄漏(也显现你的牛逼)。
阅读全文
摘要:回溯的知识点总结 看你可选的选择是不是重复(需不需要使用used数组去重),如“组合总和Ⅱ”中出现的数组的元素是有重复的,而且要求组合都是不一样的。 start参数是不是应该考虑在参数模板中,如果是求的组合数,那么需要start参数,如果求的是排列数,就不需要start参数。 元素是不是可以重复选择
阅读全文
摘要:树需要注意的点 最后结束的时候的节点是哪个?结束条件是什么。 如果是前序遍历的话,在进入下一个节点之前需要将本层的处理逻辑写在进入下一个递归之前,如果是后序遍历,那么处理逻辑是在进入所有递归之和写的。注意!如果你是到了最后一个节点返回的话,那么就是后序遍历,大部分的题目是后序遍历的。 要明确处理逻辑
阅读全文
摘要:题目 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"] 示例 2: 输入:root = [1] 输出:["1"] 提示:
阅读全文
摘要:# 题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"
阅读全文
摘要:# 如果你判断的结束条件是一个存在的节点,那么就不用判断当前节点是不是空的,如果你的结束条件是一个空节点,那么需要判断当前节点是不是空的
阅读全文
摘要:# 题目 字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 进阶: 如果有大量输入的 S,称作 S1, S2, ... , S
阅读全文
摘要:# 题目 数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:1 示例
阅读全文
摘要:# 题目 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i] == nums2[j] 且绘制的直线不与任何其他连线(非水平线)相交。 请注意,连线即
阅读全文
摘要:# 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace"
阅读全文
摘要:# 题目 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1: 输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7] 输出:3 解释:长度最长的公共子数组是 [3,2,1] 。 示例 2: 输入:nums1
阅读全文
摘要:# 题目 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l & nums) { //很明显也是一个动态规划的题目,因为根据数组的长度是可以和上一个状态依赖的 //dp数组的含义,dp[i]表示的是以nums[i]结尾的最
阅读全文
摘要:# 题目 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,1
阅读全文
摘要:# 题目 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 注意:你不能同时参与多笔交易(你必须
阅读全文
摘要:# 题目 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格,和一个整型 k 。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多可以买 k 次,卖 k 次。 注意:你不能同时参与多笔交易(你必须在再次购买
阅读全文
摘要:# 题目 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入:prices = [3,3,5,0,0,3,1,4] 输出:6
阅读全文
摘要:# 题目 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。 示例 1: 输入:prices = [
阅读全文
摘要:# 题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,
阅读全文

浙公网安备 33010602011771号