自定义博客皮肤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)
  • 收藏
  • 关注

原创 位图法-有效的数独

每行每列用二重循环,每宫比较复杂,需要考虑每一宫的坐标与二重循环ij对应关系。有效的数独,主要是判断每行每列每宫有无重复元素。行i,每一宫3行,3列。

2024-06-18 10:37:01 198

原创 二刷力扣-4月11

克服恐惧的唯一方法就是直面恐惧。

2024-04-11 15:23:49 162

原创 力扣算法-----一刷总结

尤其是动态规划,如果是自己胡乱看,几乎很难成体系的学习,同时动态规划的内容也是最多的,连着学习了三周,可以说是睁开眼睛又是动态规划,哈哈哈哈哈哈哈,不过好在坚持下来总是有收获的,对于递推公式的推导和遍历顺序、初始化都有了新的认识,二刷争取能自己慢慢实现。过去的两个月,中间伴着各种琐事,但还是坚持了下来,走过了数组、链表、哈希表、字符串、双指针、栈和队列、二叉树、回溯算法、贪心算法、以及最后的动态规划和单调栈。学习不是一蹴而就的,可能每天只能进步一点点,所以需要更多的坚持和努力。

2023-11-08 11:31:02 255

原创 day63--单调栈3

先让栈按照从栈底到栈顶从小到大的顺序排列,如果出现了当前元素小于栈顶元素的时候,如状态132的凸字形,,,left为栈顶元素,right为当前元素,求得矩形的宽,然后高就是栈顶元素,最后求result=Max(result,w*h);给定 n 个非负整数,用来表示柱状图中各个柱子的高度。接雨水利用的是3个柱子形成一个凹槽,类似于213这样的形状,在1里面蓄水。2个月的学习完结,,,撒花✿✿ヽ(°▽°)ノ✿!而本题找的是每个柱子左右两边第一个小于该柱子的柱子。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2023-11-08 11:04:00 322

原创 day61--单调栈2

503.下一个更大元素II42. 接雨水第一题:下一个更大元素2给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。0、与单调栈思路相同,不过本题需要循环数组关于处理循环数组,简单的方法就是讲数组复制一遍,然后将两个数组拼接起来,用单调栈求下一个最大值,拼接一次肯定可以找到下一个最大值或者直接把数组走两遍。

2023-11-08 10:42:15 143

原创 day60--单调栈1

739. 每日温度496.下一个更大元素 I第一题:每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。计算公式:首先第一个元素入栈。

2023-11-05 10:57:59 136

原创 day59

动态规划,回文串

2023-11-03 10:32:27 72

原创 day58--动态规划16

583. 两个字符串的删除操作72. 编辑距离编辑距离总结篇第一题:两个字符串的删除操作给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。相比之前的题,本题特点在于:找到两个字符串中相同的子串,两边都可以删除操作,子串的相对排列顺序不变。动态规划五部曲:(1)确定dp数组以及下标的含义。

2023-11-02 10:50:45 71

原创 day57--动态规划15

子序列

2023-11-01 17:18:05 108

原创 day56--动态规划14

序列求得满足条件的子序列

2023-10-31 11:07:11 113

原创 day55--动态规划13

300.最长递增子序列674. 最长连续递增序列718. 最长重复子数组。

2023-10-30 21:17:11 75

原创 day53--动态规划12

309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费第一题:.最佳买卖股票时机含冷冻期给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格。设计一个算法计算出最大利润。相比之前的股票问题,多了一个情况,卖出股票后无法在第二天买入股票,也就是说卖出后必须等待1天才能对股票进行操作。动态规划五部曲:(1)确定dp数组以及下标的含义dp[i][j],第i天的状态为j,所剩的最多现金为dp[i][j]几个状态:状态一:持有股票(不管是今天买入,或者昨天买入,但手上有股票)

2023-10-28 13:22:04 89

原创 day52--动态规划11

动态规划--买进卖出股票,可以做多次操作的时候

2023-10-27 20:37:47 78

原创 day51 --动态规划10

动态规划10

2023-10-26 14:16:56 69

原创 day50 --动态规划9

打家劫舍

2023-10-25 11:30:30 73

原创 day49--动态规划8

不论题目如何描述,涉及容量的是背包,涉及价值体积数量的是物品。确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组重点在递推公式,初始化根据递推公式决定dp[0]的值1. 问能否装满背包(或者最多装多少):dp[j]=max(dp[j],dp[j-nums[i]]+nums[i]);分割等和子集:用一个容量为sum/2的背包装子集最后一块石头的重量:同理,用一个容量为sum/2的背包装子集,并求最后剩下的。

2023-10-25 10:48:59 51

原创 day48--动态规划7

总结:今天三道题有相似之处,不考虑组合还是排序,而且物品是无限次可使用,所以对于内外层循环的对象可以不做要求。

2023-10-24 10:07:22 41

原创 day46--动态规划6

完全背包518. 零钱兑换 II377. 组合总和 Ⅳ第一题:完全背包有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。,求解将哪些物品装入背包里物品价值总和最大。。跟01背包的实现区别在哪里?物品是从小到大遍历,装到装不了然后再从小的开始。

2023-10-23 16:06:00 36

原创 day45--动态规划5

1049. 最后一块石头的重量 II494. 目标和474.一和零第一题:最后一块石头的重量 II有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。

2023-10-20 10:45:33 44

原创 day44--动态规划4

背包问题

2023-10-19 11:43:21 106

原创 day43--动态规划3

动态规划,整数拆分,不同的二叉搜索树

2023-10-18 11:11:31 39

原创 day42-动态规划2

动态规划,不同路径问题

2023-10-17 11:30:48 1264

原创 day41--动态规划1

动态规划

2023-10-17 10:50:06 26

原创 day39--贪心算法6

简单题:分发饼干(满足多条件);K次取反后最大化的数组和;柠檬水找零(只有5,10,20,尽可能先用10)中等题:摆动序列(差值正负摆动);单调递增的数字(选相邻两位做判断)股票问题:(买进卖出的时机)两个维度权衡:(先确定一个维度,然后确定另一个维度),分发糖果(相邻两者要求不同);身高重排队列难题:区间问题(跳跃游戏,射气球,重叠区间,划分字母区间,合并区间),其中除了划分字母区间和跳跃游戏外,其余都跟左右边界有关,将左右边界作为切入点,判断、计算等。

2023-10-16 15:01:33 32

原创 day38--贪心算法5

对于区间重叠问题,处理思想都是对左边界,或者右边界进行判断首先需要排序(可以以左边界,也可以以右边界)然后根据题目要求,需要一个标志记录首个边界位置,然后对比标志和第二个区间的边界(左或者右),如果存在存在重叠,肯定两者的边界有大小区别最后就是迭代,对区间挨个处理,找出需要的结果。

2023-10-16 13:14:34 32

原创 day37--贪心算法4

860.柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 美元。顾客排队购买你的产品,(按账单 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 美元、 美元或 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 ,其中 是第 位顾客付的账。如果你能给每位顾客正确找零,返回 ,否则返回 。其实一共三种情况:(1)账单是5,直接收下;(2)账单是10,消耗一个5,增加一个10(3)账单是20,优先消耗一个10和

2023-10-13 11:22:51 52

原创 补day36--贪心3

1005.K次取反后最大化的数组和134. 加油站135. 分发糖果。

2023-10-12 19:56:34 26

原创 补day35--贪心算法2

122.买卖股票的最佳时机II55. 跳跃游戏45.跳跃游戏II第一题:买卖股票的最佳时机2给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路:就是控制买进卖出之间获得最大利润,比如价格趋势是1234521,在第2天买进(-2),在第4天卖出(2)。

2023-10-12 10:50:04 24

原创 补day34--贪心算法1

理论基础455.分发饼干376. 摆动序列53. 最大子序和贪心算法没有规律?难点在于怎么划分局部,以及求得局部最优可分为四步:(其实还是两步,找出局部最优,然后推导出全局最优)(1)将问题分解为若干个子问题(2)找出适合的贪心策略(3)求解每一个子问题的最优解(4)将局部最优解堆叠成全局最优解。

2023-10-11 10:44:41 30

原创 补day32-回溯算法6

回溯大体逻辑void backtracking(参数){if(终止条件){存放结果;return;for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){处理节点;backtracking(路径,选择列表);//递归回溯,撤销处理结果;1、组合问题横向是数组长度,纵向是结果的深度,终止条件常源于此。通过对树进行剪枝,控制结果,比如求和小于target的组合;通过使用startIndex实现去重,循环的起始位置。

2023-10-10 16:16:44 28

原创 补day31 --回溯算法5

491.递增子序列* 46.全排列* 47.全排列 II第一题:递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。思路:重点在去重逻辑上,原来的标记数组在这里达不到去重的目的;还有一个重点在于先排序,本题不能先排序然后求子集,而是根据原始序列求子集1、回溯三部曲(1)递归函数的参数(2)递归终止条件第一层的节点不取,其他层节点都要取(3)单层递归逻辑同一父节点下不选择相同元素,不使用used数组进行判断,而是利用哈希set搜索。

2023-10-10 10:53:31 25

原创 补day30--回溯4

本题重点在可能包含重复元素,所以需要判断树层重复和树枝重复的问题,判断重复利用used数组来控制,排序后,相同元素相邻

2023-10-09 11:21:02 46

原创 补day29-回溯3

39. 组合总和40.组合总和II131.分割回文串第一题:组合总和给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。0、思路:数组内的元素可以重复选择,树的深度不受限,直到数组的和为target,然后返回代码随想录的第二层思想选了a,第二个分支就不考虑a1、递归三部曲(1)递归函数参数以及定义变量。

2023-10-08 15:44:21 27

原创 补day27--回溯算法1

void backtracking(int n,int k ,int startIndex) //集合n中取k个数,而startIndex用于控制下一层的递归,避免重复。关于为什么sum要加了再减,sum是用来寻找合适的值,所以加了然后递归进去判断,为什么要减,是因为一个叶子节点判断完,需要回去判断另一个叶子;示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]找出所有相加之和为 n 的 k 个数的组合。

2023-10-07 22:07:02 33

原创 补day23--二叉树9

周末完成二叉树总结,同时刷重点题型。

2023-10-06 21:32:00 43

原创 补day22--二叉树8

235. 二叉搜索树的最近公共祖先701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点。

2023-10-06 14:14:53 40

原创 补day21--二叉树7

530.二叉搜索树的最小绝对差501.二叉搜索树中的众数236. 二叉树的最近公共祖先第一题:二叉搜索树的最小绝对差给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。二叉搜索树是有序的,所以求最值或者差值可以理解为在一个有序数组上操作。1、递归法:直接用遍历方法得到一个数组,然后再对数组进行遍历,求得最小的差值2、双指针方法用一个pre结点记录一下cur节点的前一个节点;这里的指针就是一个TreeNode*变量、

2023-10-05 21:07:57 42

原创 补day20--二叉树6

今日题目:654.最大二叉树617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树。

2023-10-05 11:51:26 69

原创 补day18--二叉树part5

非要说有什么不同,本题前序遍历的方向不一样:根左右,所以确定根节点值的时候,直接放前序数组的第一个值;给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。思路:本题和上一题思路一样,步骤也一样,前序遍历可以确定根节点,然后在中序遍历中切割成两个数组。1.相比原来的层序遍历,本题不需要记录所有结点的值,只需要一个result记录一个结点的值就可以了。计数器可以往上增,累和,也可以往下减,如果最后为0 ,则说找到了满足条件的路径;0.首先中序:左根右;

2023-10-04 21:49:14 54 1

原创 补day17-二叉树4

分别求出当前节点的左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。递归的过程中依然是遇上了空节点为终止,返回0,表示当前节点为根节点的树高度为0。1.高度平衡的二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1;前序遍历:根左右,根在前,子节点在后,方便父节点指向孩子节点,找到对应的路径。返回值:以当前传入节点为根节点的树的高度。不为空,且左孩子的左右孩子都为空,这样的A节点的左孩子才是左叶子。0.基础:二叉树的节点的深度。

2023-10-04 19:29:12 64 1

空空如也

空空如也

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

TA关注的人

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