自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 day60 动态规划part17

中等提示给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

2024-04-05 21:15:58 296

原创 day64 单调栈part03

看了一圈 最后还是别的题解几句话看明白了 明确一点,遍历每个高度,是要以当前高度为基准,寻找最大的宽度 组成最大的矩形面积那就是要找左边第一个小于当前高度的下标left,再找右边第一个小于当前高度的下标right 那宽度就是这两个下标之间的距离了 但是要排除这两个下标 所以是right-left-1 用单调栈就可以很方便确定这两个边界了 题解讲了很多 但是貌似没有点明为什么这么做。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2024-04-05 17:44:52 170

原创 day63 单调栈part02

中等给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。

2024-04-04 22:25:29 271

原创 day62 单调栈part01

中等提示给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

2024-04-04 13:55:43 337

原创 day59 动态规划part16

中等给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。每步 可以删除任意一个字符串中的一个字符。示例 1:输入: word1 = “sea”, word2 = “eat”输出: 2解释: 第一步将 “sea” 变为 “ea” ,第二步将 "eat "变为 “ea”示例 2:输入:word1 = “leetcode”, word2 = “etco”输出:4。

2024-04-02 19:50:57 575

原创 day58 动态规划part15

简单给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

2024-03-31 21:54:27 317

原创 day57 动态规划part14

/ dp[i] 代表以 i 结尾的数组最大的连续子数组和,注意以nums【i】结尾,必须包含nums【i】i < len;

2024-03-31 14:29:10 802

原创 day56 动态规划part13

中等给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

2024-03-28 22:50:29 270 1

原创 day55 动态规划part12

/ 其实就是把每一天划归一个类别,整个 prices.length 的天数里划为4个状态// 买入股票状态(状态一)// 已经卖出股票并且不是冷冻期的状态(状态二)// 今天卖出股票状态(状态三)// 冷冻期状态(状态四)i < len;i++) {// 注意这里可不是dp[len - 1][3]

2024-03-28 17:24:56 827

原创 day54 动态规划part11

困难给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

2024-03-27 23:22:01 190

原创 day53 动态规划part10

简单给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。

2024-03-27 19:30:27 604

原创 day52 动态规划part9

中等你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

2024-03-26 19:14:18 886

原创 day51 动态规划part8

多重背包在面试中基本不会出现,力扣上也没有对应的题目,大家对多重背包的掌握程度知道它是一种01背包,并能在01背包的基础上写出对应代码就可以了。

2024-03-25 22:49:01 204

原创 day50 动态规划part7

卡码网:57. 爬楼梯(opens new window)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。输入描述:输入共一行,包含两个正整数,分别表示n, m输出描述:输出一个整数,表示爬到楼顶的方法数。输入示例:3 2输出示例:3提示:当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。

2024-03-25 19:50:51 174

原创 day44 动态规划part6

有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。

2024-03-25 15:01:15 581

原创 day43 动态规划part5

中等给你一个二进制字符串数组 strs 和两个整数 m 和 n。请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集。

2024-03-23 11:28:07 651

原创 day42 动态规划part4

要理解的是这个表格每一个格子都是当前所处情况的最大价值,我们用已经推导出的最大价值来推导当前情况的最大价值。

2024-03-13 15:14:53 318

原创 day41 动态规划part3

/ 更新的是dp[i], 而j比i小,dp[j]都是之前存好的,j根本不需要从0遍历到i-1。// 0 不是正整数,1 是最小的正整数,0 和 1 都不能拆分,因此 dp[0]=dp[1]=0i <= n;j++) {//dp[i - j]比dp[i]早几步算出,所以不必担心// 这里为什么还要比较dp[i]呢,是因为max(j*(i-j), j*dp[i-j])// 是相对于单独一个固定的j来说的,而j是从1到i-1的,

2024-03-11 21:58:47 289

原创 day39 动态规划part2

中等一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?

2024-03-08 17:58:25 255

原创 day38 动态规划part1

简单斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n)。

2024-03-08 17:03:49 718

原创 day37 贪心算法part6

/装箱// flag用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行i > 0;i--) { // 后往前遍历// 标记不递增的地方是从哪里开始的,在那之后的都要变成9// 比如 93232,会被改为 89999, 100,会被改为99flag = i;// 省略了下面这个不行,遇到100这种,过不去i++){// 或者 Integer.parseInt(String.valueOf(chars))

2024-03-07 23:41:04 344

原创 day36 贪心算法part5

中等给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。返回 需要移除区间的最小数量,使剩余区间互不重叠。

2024-03-06 19:26:23 395

原创 day35 贪心算法part4

简单在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false。

2024-03-05 18:49:04 259

原创 day34贪心算法 part03

简单给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i]。重复这个过程恰好 k 次。可以多次选择同一个下标 i。以这种方式修改数组后,返回数组 可能的最大和。

2024-03-04 22:16:10 713

原创 day30 回溯算法part06

因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出代码,先大概熟悉一下这些题,二刷的时候,随着对回溯算法的深入理解,再去解决如下三题。视频讲解:https://www.bilibili.com/video/BV1Rd4y1c7Bq。视频讲解:https://www.bilibili.com/video/BV1TW4y1471V。大家今天的任务,其实是 对回溯算法章节做一个总结就行。332.重新安排行程(可跳过)● 332.重新安排行程。

2024-03-04 21:44:36 260

原创 day32贪心算法 part02

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。

2024-03-04 11:03:01 414

原创 day31 贪心算法part01

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

2024-02-29 10:12:33 598

原创 day29 回溯part5

中等给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。

2024-02-16 14:25:59 306

原创 day28 回溯算法part4

中等有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。

2024-01-31 16:52:45 301

原创 day27 回溯算法part3

中等给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。

2024-01-29 23:01:06 446

原创 day25 回溯part2

中等找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。下面这个我没懂,为何可以改为 if (path.size() > k) return;?

2024-01-29 02:06:11 317

原创 day24 回溯算法part1

必须说明的是,不管怎么优化,都符合回溯框架,而且时间复杂度都不可能低于 O(N!),因为穷举整棵决策树是无法避免的,你最后肯定要穷举出 N!种全排列结果。这也是回溯算法的一个特点,不像动态规划存在重叠子问题可以优化,回溯算法就是纯暴力穷举,复杂度一般都很高。

2024-01-28 15:57:06 177

原创 day23 二叉树part9

中等给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

2024-01-25 13:21:03 322

原创 day22 二叉树part08

中等给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

2024-01-24 11:24:54 397

原创 day21 二叉树part07

/ 自己写的解法// 记录最大的那个频率// 记录当前节点的频率// 记录前一个节点i++) {return res;return;if (pre!= null) { // 当不是中序遍历数组的第一个节点时= node.val) { // 当出现了一个新的val值时} else { // 当val等于前一个val值时cur_fre++;} else { // 当此节点为第一个节点时。

2024-01-22 21:40:00 365

原创 day20 二叉树part6

以下截图来自:https://labuladong.github.io/algo/// 用中序遍历存数组里的方法i++) { // 这里要用int i = 1// 是大于等于,不是大于return;关于初始值的优化:因为测试数据中有int类型的最小值,所以取long类型的最小值作为初始值。但是这样治标不治本,如果测试数据中存在long类型的最小值,不可能再初始化一个更小的值,所以建议取二叉树中序遍历序列的第一个值作为初始值。

2024-01-20 13:51:17 830

原创 day18 二叉树 part05

中等给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。

2024-01-18 16:31:39 387 1

原创 day17 二叉树part04

简单给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

2024-01-16 12:44:11 406

原创 day16 二叉树part3

所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。这一点其实是很多同学没有想清楚的,很多题解同样没有讲清楚。遍历的顺序一定是左右中,中间是处理的过程(把孩子节点的深度返回给父节点)

2024-01-14 17:08:13 856 1

原创 day15 二叉树part2

中等给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。

2024-01-11 21:41:57 794

空间后方交会C语言(参考武大教材)

空间后方交会C语言版。希望大家有所收获。

2021-04-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除