自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 迪杰斯特拉算法的理解

第三步,选出E,为什么能确定E是最短的,因为现在E的最短路径,是从S集合里的每一个点更新而来的,不可能存在一个点在D和E之间,如果有,早就被加到S中去了,所以E一定是最短的。这里我么发现,D->C->F这条路径会被pass,改成D->E->F,这说明,每次更新都是用已经确定了最短路径的元素来更新的,当前的F,其实已经被比了两次了!因为不可能存在另一个节点X能连接D和C了,所以C是确定了的,那么,我们再以C来更新别的,更新和C相连的,发现能更新B,F,E不能更新,从D到E的已经最短了。

2024-10-16 22:32:19 224

原创 转载:Java常用注解(Annotation)详解汇总

注解其实就是代码里的特殊标记,它用于替代配置文件,有了注解技术后,开发人员可以通过注解告诉类如何运行。通过。

2024-10-03 17:30:19 1862

原创 记忆osi七层模型的口诀/方法/谐音

物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。想象面前有很多挂着渔网的船,船上的人会说英语。物数网传会表应(无数网船会飙英(语))无数的网船上会有人飙英语。

2024-09-28 16:41:16 228 1

原创 计算字符串中子串出现的次数

【代码】计算字符串中子串出现的次数。

2024-09-23 14:38:04 221

原创 Hot100解题记录

已解答简单相关标签相关企业提示给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

2024-09-18 16:11:12 598

原创 day60 动态规划part17(647. 回文子串516. 最长回文子序列)

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

2024-04-05 21:15:58 457

原创 day64 单调栈part03(84. 柱状图中最大的矩形)

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

2024-04-05 17:44:52 341

原创 day63 单调栈part02(503. 下一个更大元素 II 42. 接雨水)

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

2024-04-04 22:25:29 430

原创 day62 单调栈part01(739. 每日温度496. 下一个更大元素 I)

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

2024-04-04 13:55:43 483

原创 day59 动态规划part16(583. 两个字符串的删除操作72. 编辑距离)

中等给定两个单词 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 643

原创 day58 动态规划part15(392. 判断子序列115. 不同的子序列)

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

2024-03-31 21:54:27 382

原创 day57 动态规划part14 (1143. 最长公共子序列1035. 不相交的线53. 最大子数组和)

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

2024-03-31 14:29:10 981

原创 day56 动态规划part13(300. 最长递增子序列674. 最长连续递增序列718. 最长重复子数组)

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

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

原创 day55 动态规划part12(309. 买卖股票的最佳时机含冷冻期714. 买卖股票的最佳时机含手续费)

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

2024-03-28 17:24:56 942

原创 day54 动态规划part11(123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV)

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

2024-03-27 23:22:01 257

原创 day53 动态规划part10(121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II)

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

2024-03-27 19:30:27 664

原创 day52 动态规划part9(198. 打家劫舍213. 打家劫舍 II 337. 打家劫舍 III)

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

2024-03-26 19:14:18 1001 1

原创 day51 动态规划part8(139. 单词拆分 多重背包讲解)

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

2024-03-25 22:49:01 335

原创 day50 动态规划part7(70. 爬楼梯(进阶版)322. 零钱兑换 279. 完全平方数)

卡码网:57. 爬楼梯(opens new window)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬至多m (1

2024-03-25 19:50:51 251

原创 day44 动态规划part6(完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ)

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

2024-03-25 15:01:15 696

原创 day43 动态规划part5(1049. 最后一块石头的重量 II 494. 目标和 474. 一和零)

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

2024-03-23 11:28:07 756

原创 day42 动态规划part4(01背包问题 二维 一维(滚动数组)416. 分割等和子集)

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

2024-03-13 15:14:53 431

原创 day41 动态规划part3(343. 整数拆分96. 不同的二叉搜索树)

/ 更新的是dp[i], 而j比i小,dp[j]都是之前存好的,j根本不需要从0遍历到i-1。// 0 不是正整数,1 是最小的正整数,0 和 1 都不能拆分,因此 dp[0]=dp[1]=0i

2024-03-11 21:58:47 400

原创 day39 动态规划part2(62. 不同路径63. 不同路径 II)

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

2024-03-08 17:58:25 323

原创 day38 动态规划part1 (509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯)

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

2024-03-08 17:03:49 796

原创 day37 贪心算法part6(738. 单调递增的数字968. 监控二叉树)

/装箱// 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 473

原创 day36 贪心算法part5(435. 无重叠区间763. 划分字母区间56. 合并区间)

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

2024-03-06 19:26:23 511

原创 day35 贪心算法part4(860. 柠檬水找零406. 根据身高重建队列452. 用最少数量的箭引爆气球)

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

2024-03-05 18:49:04 345

原创 day34贪心算法 part03(1005. K 次取反后最大化的数组和134. 加油站135. 分发糖果)

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

2024-03-04 22:16:10 847

原创 day30 回溯算法part06(跳过● 332.重新安排行程 ● 51. N皇后 ● 37. 解数独)

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

2024-03-04 21:44:36 367

原创 day32贪心算法 part02(122. 买卖股票的最佳时机 II 55. 跳跃游戏45. 跳跃游戏 II)

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

2024-03-04 11:03:01 562

原创 day31 贪心算法part01(455. 分发饼干376. 摆动序列53. 最大子数组和)

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

2024-02-29 10:12:33 694

原创 day29 回溯part5(491. 非递减子序列46. 全排列47. 全排列 II)

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

2024-02-16 14:25:59 358

原创 day28 回溯算法part4(93. 复原 IP 地址78. 子集90. 子集 II)

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

2024-01-31 16:52:45 415

原创 day27 回溯算法part3(39. 组合总和 40. 组合总和 II 131. 分割回文串)

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

2024-01-29 23:01:06 543

原创 day25 回溯part2(216. 组合总和 III 17. 电话号码的字母组合)

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

2024-01-29 02:06:11 390

原创 day24 回溯算法part1(77. 组合)

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

2024-01-28 15:57:06 241

原创 day23 二叉树part9(669. 修剪二叉搜索树108. 将有序数组转换为二叉搜索树538. 把二叉搜索树转换为累加树)

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

2024-01-25 13:21:03 359

原创 day22 二叉树part08(235. 二叉搜索树的最近公共祖先701. 二叉搜索树中的插入操作450. 删除二叉搜索树中的节点)

中等给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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 513 1

原创 day21 二叉树part07(530. 二叉搜索树的最小绝对差501. 二叉搜索树中的众数236. 二叉树的最近公共祖先)

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

2024-01-22 21:40:00 491

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

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

2021-04-10

空空如也

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

TA关注的人

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