自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

曦煜墨白的博客

曦煜墨白的博客

  • 博客(108)
  • 收藏
  • 关注

原创 U盘文件或目录损坏且无法读取(解决办法)

等待命令的执行成功,U盘就能够成功修复。输入成功后电脑会开始检查并修复U盘。

2024-01-11 12:50:11 1101

原创 动态规划14:一和零

不少同学刷过这道题,可能没有总结这究竟是什么背包。此时我们讲解了0-1背包的多种应用,纯 0 - 1 背包是求 给定背包容量 装满背包 的最大价值是多少。416. 分割等和子集是求 给定背包容量,能不能装满这个背包。1049. 最后一块石头的重量 II是求 给定背包容量,尽可能装,最多能装多少494. 目标和是求 给定背包容量,装满背包有多少种方法。本题是求 给定背包容量,装满背包最多有多少个物品。这些都是 0-1背包不同维度上的应用,大家可以细心体会!

2023-10-30 16:16:18 183

原创 动态规划:13目标和

如何转化为01背包问题呢。假设加法的总和为x,那么减法对应的总和就是sum - x。所以我们要求的是 x - (sum - x) = targetx = (target + sum) / 2**此时问题就转化为,装满容量为x的背包,有几种方法**。这里的x,就是bagSize,也就是我们后面要求的背包容量。大家看到(target + sum) / 2 应该担心计算的过程中向下取整有没有影响。这么担心就对了,例如sum 是5,target是2的话其实就是无解的,所以

2023-10-20 15:25:24 858

原创 动态规划:12最后一块石头的重量II

本题其实和动态规划:11分割等和子集几乎是一样的,只是最后对dp[target]的处理方式不同。动态规划:11分割等和子集相当于是求背包是否正好装满,而本题是求背包最多能装多少。

2023-10-20 15:22:42 716

原创 动态规划:11分割等和子集

这道题目就是一道01背包应用类的题目,需要我们拆解题目,然后套入01背包的场景。01背包相对于本题,主要要理解,题目中物品是nums[i],重量是nums[i],价值也是nums[i],背包体积是sum/2。看代码的话,就可以发现,基本就是按照01背包的写法来的。

2023-10-17 21:33:23 191 1

原创 动态规划:10 0-1背包理论基础II(滚动数组)

对于背包问题其实状态都是可以压缩的。在使用二维数组的时候,递推公式:dp[i]\[j] = max(dp[i - 1]\[j], dp[i - 1]\[j - weight[i]] + value[i]);**其实可以发现如果把dp[i - 1]那一层拷贝到dp[i]上,表达式完全可以是:dp[i]\[j] = max(dp[i]\[j], dp[i]\[j - weight[i]] + value[i]);****与其把dp[i - 1]这一层拷贝到dp[i]上,不如只用一个一维数组了**,只

2023-10-16 16:02:43 817 1

原创 动态规划:09 0-1背包理论基础I

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。**每件物品只能用一次**,求解将哪些物品装入背包里物品价值总和最大这是标准的背包问题,以至于很多同学看了这个自然就会想到背包,甚至都不知道暴力的解法应该怎么解了。这样其实是没有从底向上去思考,而是习惯性想到了背包,那么暴力的解法应该是怎么样的呢?每一件物品其实只有两个状态,取或者不取,所以可以使用回溯法搜索出所有的情况,那么时间复杂度就是$o(2^n)$,这里的n表示物品数量。

2023-10-16 16:01:26 159

原创 动态规划:08不同的二叉搜索树

这道题目虽然在力扣上标记是中等难度,但可以算是困难了!首先这道题想到用动规的方法来解决,就不太好想,需要举例,画图,分析,才能找到递推的关系。然后难点就是确定递推公式了,如果把递推公式想清楚了,遍历顺序和初始化,就是自然而然的事情了。可以看出我依然还是用动规五部曲来进行分析,会把题目的方方面面都覆盖到!用动规五部曲解斐波那契的时候,感觉简答题复杂化了。但要知道,简单题是用来练习方法论的,并不能简单代码一甩,简单解释一下就完事了。可能当时不理解,现在大家应该感受方法论的重要性了,加油💪。

2023-10-13 11:22:45 77

原创 动态规划:07整数拆分

确定递归公式:dp[i] = max((j * (i - j)), j * dp[i - j])我们知道,要将一个数拆分的乘积最大,那么这几个数需要近似相等,那么就可以优化我们的代码。dp数组初始化:dp[0] = 0, dp[1] = 0, dp[2] = 1。确定dp数组含义:将i拆分,最大乘积是dp[i]对于思路来说,递推公式就先想到这里。debug:打印dp数组。

2023-10-13 11:21:49 123

原创 动态规划:06不同路径II

本题是动态规划:05不同路径的障碍版,整体思路大体一致。但就算是做过62.不同路径,在做本题也会有感觉遇到障碍无从下手。其实只要考虑到,遇到障碍dp[i][j]保持0就可以了。也有一些小细节,例如:初始化的部分,很容易忽略了障碍之后应该都是0的情况。

2023-10-12 13:27:16 718

原创 动态规划:05不同路径

本题还是使用动规五部曲,但这次我们就要考虑如何正确的初始化了,初始化和遍历顺序其实也很重要!

2023-10-12 13:22:26 94

原创 动态规划:04使用最小花费爬楼梯

本题相较于动态规划:03爬楼梯难了一点,但整体思路一致。

2023-10-11 20:04:52 212

原创 动态规划:03爬楼梯

所以到第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来,那么就可以想到动态规划了。有面试官指出:面试中能写出第一个就够了,清晰明了,如果要求进一步优化空间的话,再去优化。那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。我们发现:本题其实就是。

2023-10-11 20:01:58 186

原创 动态规划:02斐波那契数

这是一道简单的动规题,为什么简单呢,因为在五部曲中2、3步题目直接给有,第4步也是凭常识习惯就是正确的要按照五部曲认真想,难题也是这五步,要培养思想。

2023-10-11 19:59:38 79

原创 动态规划:01动态规划理论基础

这一篇是动态规划的整体概述,讲解了什么是动态规划,动态规划的解题步骤,以及如何debug。动态规划是一个很大的领域,今天这一篇讲解的内容是整个动态规划系列中都会使用到的一些理论基础。在后序讲解中针对某一具体问题,还会讲解其对应的理论基础,例如背包问题中的01背包,leetcode上的题目都是01背包的应用,而没有纯01背包的问题,那么就需要在把对应的理论知识讲解一下。这里理论基础篇已经是非常偏实用的了,每个知识点都是在解题实战中非常有用的内容,要重视起来。

2023-10-11 19:59:05 79

原创 17贪心:监控二叉树(Hard)

本题的难点首先是要想到贪心的思路,然后就是遍历和状态推导。在二叉树上进行状态推导,其实难度就上了一个台阶了,需要对二叉树的操作非常娴熟。

2023-10-10 11:44:22 62

原创 16贪心:单调递增的数字

本题只要想清楚个例,例如98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9,这样这个整数就是89。就可以很自然想到对应的贪心解法了。想到了贪心,还要考虑遍历顺序,只有从后向前遍历才能重复利用上次比较的结果。最后代码实现的时候,也需要一些技巧,例如用一个start来标记从哪里开始赋值9。

2023-10-10 11:42:51 60

原创 15贪心:合并区间

所以一样的套路,先排序,让所有的相邻区间尽可能的重叠在一起,按左边界,或者右边界排序都可以,处理逻辑稍有不同。这几道题都是判断区间重叠,区别就是判断区间重叠后的逻辑,本题是判断区间重贴后要进行区间合并。本题的本质其实还是判断重叠区间问题。

2023-10-09 16:37:53 67

原创 14贪心:划分字母区间

在遍历的过程中相当于是要找每一个字母的边界,**如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了**。此时前面出现过所有字母,最远也就到这个边界了。可以分为如下两步:- 统计每一个字符最后出现的位置- 从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

2023-10-09 14:58:43 68

原创 13贪心:无重叠区间

和12贪心:用最少数量的箭引爆气球非常像,稍微一改便可AC,两者基本是相同的题,可以一起练习

2023-10-09 14:57:49 67

原创 12贪心:用最少数量的箭引爆气球

直觉上来看,貌似只射重叠最多的气球,用的弓箭一定最少,那么有没有当前重叠了三个气球,我射两个,留下一个和后面的一起射这样弓箭用的更少的情况呢?局部最优:当气球出现重叠,一起射,所用弓箭最少。就算思路都想好了,模拟射气球的过程,很多同学真的要去模拟了,实时把气球从数组中移走,这么写的话就复杂了。这道题目贪心的思路很简单也很直接,就是重复的一起射了,但本题我认为是有难度的。既然按照起始位置排序,那么就从前向后遍历气球数组,靠左尽可能让气球重复。而且寻找重复的气球,寻找重叠气球最小右边界,其实都有代码技巧。

2023-10-08 16:38:27 89

原创 11贪心:根据身高重建队列

如果按照k来从小到大排序,排完之后,会发现k的排列并不符合条件,身高也不符合条件,两个维度哪一个都没确定下来。本题有两个维度,h和k,看到这种题目一定要想如何确定一个维度,然后再按照另一个维度重新排列。那么按照身高h来排序呢,身高一定是从大到小排(身高相同的话则k小的站前面),让高个子在前面。遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。局部最优可推出全局最优,找不出反例,那就试试贪心。那么究竟先按h排序呢,还是先按照k排序呢?

2023-10-08 12:37:27 65

原创 10贪心:柠檬水找零

这道题目刚一看,可能会有点懵,这要怎么找零才能保证完成全部账单的找零呢?但仔细一琢磨就会发现,可供我们做判断的空间非常少!有如下三种情况:情况一:账单是5,直接收下。情况二:账单是10,消耗一个5,增加一个10情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5

2023-10-08 12:36:35 86

原创 09贪心:分发糖果

如果 ratings[i] > ratings[i + 1],此时candyVec[i](第i个小孩的糖果数量)就有两个选择了,一个是candyVec[i + 1] + 1(从右边这个加1得到的糖果数量),一个是candyVec[i](之前比较右孩子大于左孩子得到的糖果数量)。那么又要贪心了,局部最优:取candyVec[i + 1] + 1 和 candyVec[i] 最大的糖果数量,保证第i个小孩的糖果数量既大于左边的也大于右边的。全局最优:相邻的孩子中,评分高的孩子获得更多的糖果。

2023-09-28 11:41:33 111

原创 08贪心:加油站

i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。每个加油站的剩余量rest[i]为gas[i] - cost[i]。

2023-09-28 11:40:35 80

原创 07贪心:跳跃游戏II

如果移动下标达到了当前这一步的最大覆盖最远距离了,还没有到终点的话,那么就必须再走一步来增加覆盖范围,直到覆盖范围覆盖了终点。贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。思路虽然是这样,但在写代码的时候还不能真的能跳多远就跳多远,那样就不知道下一步最远能跳到哪里了。移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。这里还是有个特殊情况需要考虑,当移动下标达到了当前覆盖的最远距离下标时。本题要计算最少步数,那么就要想清楚什么时候步数才一定要加一呢?

2023-09-28 11:39:42 142

原创 06贪心:跳跃游戏

这道题目关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。可以看出思路想出来了,代码还是非常简单的。感觉,贪心系列题目和题目之间貌似没有什么联系?是真的就是没什么联系,因为贪心无套路!没有个整体的贪心框架解决一系列问题,只能是接触各种类型的题目锻炼自己的贪心思维!

2023-09-25 22:03:36 369

原创 05贪心:买卖股票的最佳时机 II

相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。那么根据 prices 可以得到每天的利润序列:(prices[i] - prices[i - 1])…(prices[1] - prices[0])。假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。这道题目可能我们只会想,选一个低的买入,再选个高的卖,再选一个低的买入…

2023-09-25 22:02:47 207

原创 04贪心:最大子序和

贪心思路:只要当前总和不是负数,对后面的数就有增大作用可以保留,一旦出现了负数,那么对后面的数就是减小的作用,及时抛弃。局部最优:只要当前和为负数,就丢弃,后面的可能更大。注意:有result实时更新最大值。

2023-09-21 09:42:00 163

原创 03贪心:摆动序列

局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值。整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列。局部最优推出全局最优,并举不出反例,那么试试贪心!

2023-09-20 16:09:28 173

原创 02贪心:分发饼干

题目链接:455. 分发饼干想一想小饼干满足小胃口和大饼干满足大胃口的区别for和if:小饼干满足小胃口->for是遍历饼干,if遍历胃口;大饼干满足大胃口->for是遍历胃口,if遍历饼干why?注意:谁在for循环里面就是无条件全部遍历,谁在if里面就是满足条件才遍历小饼干满足小胃口:都在起始位置,饼干不满足胃口->饼干需要移动换成大一点的饼干来看看是否满足起始胃口,如果是胃口移动就搞笑了,我最小的胃口都不满足,大胃口肯定更不行了大饼干满足大胃口:都在起始位置,饼干不满足胃口->饼干已经是最大的了

2023-09-19 11:13:37 72

原创 01贪心:算法理论知识

本篇给出了什么是贪心以及大家关心的贪心算法固定套路。不好意思了,贪心没有套路,说白了就是常识性推导加上举反例。最后给出贪心的一般解题步骤,大家可以发现这个解题步骤也是比较抽象的,不像是二叉树,回溯算法,给出了那么具体的解题套路和模板。

2023-09-19 09:17:25 284

原创 MySQL基础知识(必知)

数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。数据库管理系统:DataBaseManagement,简称DBMS。数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库当中的数据进行增删改查。常见的数据库管理系统:MySQL、Oracle、MS SqlServer、DB2、sybase等....SQL:结构化查询语言。

2023-04-22 12:08:07 1371

原创 使用Github+picGo搭建图床,超详细教程

这里的域名采用的cdn加速,本应是https://raw.githubusercontent.com/[username]/[仓库名]起因:gitee的图床挂了,原因是gitee的防盗链,所以就打算更换图床,本文详细记录使用github+picgo使用图床的过程。可以直接复制上面的自定义域名,一般情况下没问题,如果出现问题就采用原本的域名,网络问题自己解决。分支:默认master,20年的时候,github的默认分支名变更为main。记得勾选repo选项,生成即可,记得保存,只会显示这一次。

2023-04-16 22:42:41 1213

原创 回溯:02组合问题合集

来举一个例子,n = 4,k = 4的话,那么第一层for循环的时候,从元素2开始的遍历都没有意义了。在第二层for循环,从元素3开始的遍历都没有意义了。组合题:已知一个集合1,2,3,4,要求将大小为2的集合找出来,两层for很容易得出,但是100个数50个集合呢,如何通过一个数k来控制for循环的层数呢。n这一点若同时在同一个if中,会一直循环stackoverflow;回溯算法如果想要剪枝,就思考for的范围是不是太大了。本题集合中有重复的元素,也就是说要进行去重。

2023-04-16 10:21:07 189

原创 回溯:01基础知识

有递归就有回溯,回溯隐藏在递归函数下面的部分,通常说回溯函数就是递归函数,两个是相辅相成的回溯搜索就是纯暴力搜索。

2023-04-15 09:32:23 51

原创 二叉树:24 把二叉搜索树转换为累加树

【代码】二叉树:24 把二叉搜索树转换为累加树。

2023-04-15 09:31:16 53

原创 二叉树:23 将有序数组转换为二叉搜索树

【代码】二叉树:23 将有序数组转换为二叉搜索树。

2023-04-15 09:29:21 44

原创 二叉树:22修剪二叉搜索树

【代码】二叉树:22修剪二叉搜索树。

2023-04-15 09:28:03 45

原创 二叉树:21删除二叉搜索树中的节点

【代码】二叉树:21删除二叉搜索树中的节点。

2023-04-15 09:27:31 54

空空如也

空空如也

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

TA关注的人

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