自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 (注意看,贪心算法突破口 装满石头背包的最大数量)leetcode 2712

装满石头的最大数量,那我们就建立一个数组cap,统计放满的背包ans,看每个背包还能装多少石头,剩余石头additionalRocks 简称add。add>0 判断add>=cap[i] 直接相减 ans++,add<cap[i],放不满不做处理,处理后续背包。cap[i]的值一定大于等于0,当cap[i]等于0的时候直接ans++不做后续处理。数学的情况属于范围而不是特定的值,直接取数据范围!当然我们要考虑背包可放入的石头和还有石头的数据情况。局部最优:尽可能的装满背包需要石头少的。

2025-03-31 15:15:03 245

原创 (简单题 位运算)leetcode 10009

异或运算完成指定有效位取反(注意 带符号整数都是32位每位都会判断不能直接~)(或者找到第一个大于n的2的i次幂,再用其-1进行异或)我们i从1开始算或者if(n==0)return 1;这个只能用1<<31-1进行与运算也就是INT_MAX。我们找到i的位置,用(1<<i+1)-1和n异或就行。若n二进制最高位1是第i位则n一定小于第2的i+1。我们i要是从0开始判断 1<<0,导致0^0=0。注意区分i是n的有效位数还是有效位数加1。如5:000000……

2025-03-29 17:53:12 174

原创 (并查集 省份数量)leetcode 547

【代码】(并查集 省份数量)leetcode 547。

2025-03-24 20:27:27 220

原创 (st表 蓝桥云课)区间最大值

ST 表用于处理静态区间最值查询,其中 st[i][j] 表示从下标 i 开始,长度为 2^j 的区间的最值(如最小值或最大值)。st[i][j]=min(st[i][j-1],st[i+2^(j-1)][j-1] //min可以改成max。求st[i][j]变成了把从i开始 长度为2^j次方的区间变成了,求两个区间长度为2^j-1的区间的最值。st[i+1<<(j-1)][j-1] 表示从下标i+2^(j-1)开始,长度为2^j-1的区间。由于总长度为2^j则j等于0的时候,最值就是a【i】

2025-03-23 17:00:35 320

原创 (暴力枚举 水题 长度为3的不同回文子序列)leetcode 1930

关键就是去重,暴力没啥好说明的。

2025-03-18 21:48:49 262

原创 (位运算 水题?407周赛题?o 使两个整数相等的位更改次数)leetcode 3226

关键在于如何判断n无法构成k(当k是n的子集时 n能构成k)

2025-03-18 00:35:55 206

原创 (hash表+vector 数位和相等数对的最大和)leetcode 2342

 一定要断点调试看看数据对不对的上!!!不然很容易弄不清楚值和下标

2025-03-17 19:03:41 200

原创 (动态规划 区间dp/dfs 最长回文子序列)leetcode 516

选或者不选 从两侧向内缩小问题规模

2025-03-14 22:27:11 464

原创 (语法笔记 分析题解语法 二分 “unordered_map与vector<pair<>>“ 快速数组)leetocde 1146

核心思路:建立 unordered_map<int, vector<pair<int, int>>> history;  令key为下标 vector存放不同快照引索的值,详看下文的输出

2025-03-11 23:49:04 813

原创 (二分 数学推导 统计公平数对的数目)leetcode 2563

则lower-nums[j]<=nums[i]<=upper-nums[j]找到这个范围的nums[i]的个数就是我们要的值

2025-03-10 15:31:00 200

原创 (二分 数学推导区间 两个数组的距离值)leetcode 1385

数学推导:当arr2[j]属于[x-d,x+d]的范围的时候,就不满足条件

2025-03-10 14:55:43 142

原创 (二分 求长度 正整数和负整数的最大计数)leetcode 2529

下标为0-(i-1)的元素个数就是i,所以计算长度考虑nums.end()

2025-03-10 12:57:53 289

原创 (动态规划 01背包 数学 最后一块石头的重量II)leetocde 1049

就是当x越接近sum/2时取得的最值最小,求出目标和为x用01背包 差值=|x-(sum-x)|=|2x-sum|

2025-03-08 13:59:12 623

原创 (动态规划 01背包 和为目标值的最长子序列的长度)leetcode 2915

假设当前元素 nums[i-1] 可选(即 j >= nums[i-1]),但若直接赋值 dp[i][j] = dp[i - 1][j - nums[i - 1]] + 1,相当于强制选择当前元素。为什么dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - nums[i - 1]] 不能是dp[i][j]= dp[i - 1][j - nums[i - 1]?为什么设为-1,有什么含义?

2025-03-07 20:03:42 292

原创 (dfs 单词搜索)leetcode 79

用双重循环以所有的位置都作为起始点开始遍历

2025-03-07 18:42:12 181

原创 (典型 动态规划 完全背包 零钱兑换)leetcode 322

01背包放第i件物品后+dp[i-1][j-w[i]],  完全背包则是放第i件物品后+dp[i][j-w[i]]

2025-03-05 19:11:35 293

原创 (动态规划 买卖股票的最佳时机II)leetcode 122

换句话说 dp[i][0]就是成本,dp[i][0]就是利润,成本和利润仅取决于昨天

2025-03-04 00:19:00 317

原创 (链表 删除链表的倒数第N个结点)leetcode 19

设空结点指向head便于插入和删除结点

2025-03-03 19:45:10 222

原创 (模拟 反转字符串中的单词)leetcode 151

这个题我们用一个vector<string>s1的容器存放所有的单词,建立string ans再倒序依次添加s[i]再添加空格返回

2025-03-03 14:46:39 218

原创 (动态规划 最长公共子序列)leetode 1143

子序列问题的核心思想:即使当前字符不匹配,也要继承之前的最优解,从而保证全局最优。

2025-03-02 16:52:43 301

原创 (动态规划 最长重复子数组)leetcode 718

我们观察dp数组,发现dp【i】【j】的左上角为1就是连续的重复子串,那就将所有的dp【i】【j】都加上左上角的值,ans再遍历的过程中同时取最大值就是我们要的答案。思路就是建立一个二维的dp数组,只要nums1[i]==nums2[j](nums1和nums2出现重复元素就置1 并加上左上角的值)这也是为什么我们会在dp[i][j]多加上一行一列的原因,防止加上后越界。为什么要这么做并且为什么要加dp【i-1】【j-1】?为什么代码是nums1 i-1和nums2 i-1。

2025-03-02 15:33:18 232

原创 (贪心 合并区间)leetcode 56

第i行的左区间一定大于第i-1行的左区间(排序过了),所以只判断ans的右区间和intervals的左区间:

2025-03-02 14:32:32 295

原创 (贪心 跳跃游戏)leetcode 55

nums[1]=3,也就是在nums[2]和nums[4]这个区间范围找到最大范围,而因为此时已经到达最后一个下标 返回true。在nums[0]=2,也就是在nums[1]和nums[2]找到最大范围(for(int i=0;为什么cover=max(i+nums[i],cover)而不是cover=i+nums[i]?本题不考虑每个结点走几步只考虑范围。题解思路:代码随想录--

2025-03-02 00:32:31 170

原创 (动态规划 最大(连续)子数组和)leetcode 53

递推公式中dp[i]=max(dp[i],dp[i]+dp[i-1]),可以发现,这里如果是背包问题,不取应该是max(dp[i-1],**)但是这里是dp[i]意思是满足题意 也就是重新自立门户为子数组的开头。连续子数组也就是子串,这里有m个子串(m属于n) n=nums.size();dp[i]+dp[i-1]这里是为了构成子数组和而存在的。有异曲同工之妙,本质是一样的,只是这个题更基础一点。

2025-03-01 23:55:46 215

原创 (平衡二叉树 判断是否为AVL树 )leetcode110

平衡二叉树(avl)树意思是左右子树的最高深度相减<=0也就是abs(left - right) <=0。答:因为判断左右子树,只能在具有左右子树的父结点来进行。至于深度用index dfs的标记法来做。只要有一课子树不满足条件那就不是avl树。为什么用遍历用前序遍历?

2025-03-01 19:02:19 192

原创 (动态规划 最长连续递增子序列)leetcode 674

这个题目翻译人话就是找出最长的递增子串,用一层for循环就行,时间复杂度是O(n)比起上个题,一个范围多条子序列(路径)这里一个范围只有一条递增路径,所以特别单纯。

2025-03-01 18:21:11 255

原创 (动态规划 最长递增的子序列)leetcode 300

每个dp【i】代表着经过的路径,可以看成递归的归的父节点

2025-03-01 18:01:16 242

原创 (链表 反转(局部区间)链表II)leetcode92

建立一个空头->head,后续遍历和操作保证指向均指向第一个元素,然后返回空头->next。答:因为left可能为1,导致prev处于k结点上,反转后,head跑后面去了结果不对。在for循环中,只改变nextq存储的结点,将left后面的结点给插入到prev后。只遍历一次,时间复杂度为(n);为什么最后不直接返回head。

2025-02-27 14:51:29 180

原创 (典型 状态动态规划 买入股票的最佳时机)leetcode 121

题解的dp数组 0列是负数,这里我改成正数不再相加而是相减获取利润。

2025-02-27 00:59:21 222

原创 (2.26 “详细分析示例“ 暴力+位运算 最长优雅子数组)leetcode 2401

由:最长的优雅子数组长度为 1 ,任何长度为 1 的子数组都满足题目条件。答:出现这种情况说明mask与nums j后就直接break。担心两数的1在用一位导致mask覆盖了?答:ans初始值为1;

2025-02-26 14:35:26 182

原创 (动态规划 完全背包 **)leetcode279完全平方数

求最优方案和,最优值,排列组合数三类动态规划是不同的

2025-02-22 17:59:45 260

原创 (贪心 最大子数组和) leetcode 53

数组和小于0舍去从后重新加,若全为负数,则直接返回最大值。

2025-02-19 19:21:22 92

原创 (第一次独立完成的动态规划题目)leetcode53 最大子数组和

得出这个值变相的经过的最优的子数组,大问题化成子问题,子问题接着化。(dp动态规划,dp[i]存放最优解 值代表一个记忆化过程)

2025-02-19 19:04:10 76

原创 (leetcode42 前缀后缀最值)接雨水

得知height[i]的左边和右边的最大值,把每个height[i]看成是一个矩形杯子 取俩值的最小值为高减去当前的柱子数就是当前水的数量。的左边或右边有比它更矮的柱子,水就会溢出。所以,只能被左边或右边的更高柱子所“挡住”。为了计算每个位置能接住多少水,我们需要知道在每个位置上方的水的容量。大于当前柱子的高度。如果当前柱子比两边的最矮柱子都高,就不能积水。用两个数组,分别计算height的前缀最小值和后缀最大值。因为水是无法超过最矮的柱子的。

2025-02-19 15:06:42 391

原创 (leetcode 1749 前缀和)1749. 任意子数组和的绝对值的最大值

(看完题解对不清楚的地方提出问题,写的时候按习惯改变变量写答案,或者写个变种代码)任意子数组和 的绝对值的最大值实际上是前缀和之间的差的最大值。因为任意一个子数组的和。,它的绝对值是最大当。

2025-02-18 23:59:36 196

原创 (lanqiaoOJ3382 二维前缀和)区间次方和

建立一张行为1--5的k次方 列为数组的当k行的k阶前缀和的二维表。蓝桥设定首先变量大小要按照给定数据的大小范围设定。需要什么范围的直接输入提取就行。,样式测试用例非提交测试用例。

2025-02-17 20:31:40 232

原创 (动态规划 完全背包(方案数)leetcode377)组合求和IV

确立状态转移方程需要深入理解问题,合理定义子问题,找到边界条件(比如dp[0]),分析状态之间的转移关系(dp和dp之间的关系),并进行验证。

2025-02-07 17:05:23 260

原创 (动态规划基础 整数拆分)leetcode 343

而在前j数中已经求出拆分后的最大值也就是dp[i-j],打个比方说dp[3]=2,隐含了拆分成1+2俩和数相乘为最优值,但是这里有特殊情况,4的两和数相乘比2*dp[2]要大,所以要比较,比较完了后和dp[i]比较,保留目前为止比较的最大值。n/2之前的和n/2之后的求和数比较值一致,只改变了位置,可以做一个剪枝。不比较dp[i],则最大值取j最后一次遍历的比较值。j的取值从1-n或者是1--n/2。使得n=j*(n-j)俩数比较。

2025-02-07 14:53:40 235

原创 (**递归思想 回溯递归dfs 电话号码的字母组合 remake)leetcode 17

只找边界条件和非边界条件,剩下的交给数学归纳法就行,考虑子问题的重复性。

2025-02-03 15:53:07 256

原创 (动态规划路径基础 最小路径和)leetcode 64

2、从[1行到n-1行][1列到m-1列]依次赋值。1.初始化dp数组,初始化边界。

2025-01-31 22:45:39 275

回溯法,加点分割过程leetcode,还原IP地址

回溯法,加点分割过程leetcode,还原IP地址

2025-01-25

空空如也

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

TA关注的人

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