自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录回溯算法03

93.复原IP地址本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。在使用ArrayListSetString的方法大全length()"hi""123"1233.14truetruetrue。

2025-04-06 22:49:12 561

原创 代码随想录回溯算法02

39. 组合总和本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制。

2025-04-05 22:14:22 276

原创 代码随想录回溯算法01(递归)

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。。

2025-04-05 20:32:00 1045

原创 蓝桥杯准备(前缀和差分)

注意点:为了防止访问越界,使trees[i]从trees[1]开始,使当l=1时不会越界。前缀和优点:增加了空间复杂度,但查询的时间复杂度为O(1),适用于查询次数过多的情况。注意为了防止溢出:应该使用long类型。,所以矿洞的前缀和只需要计算到。贪心算法:掉头最多只能有一次。,但数组索引不能是负的。

2025-04-01 23:26:05 247 2

原创 代码随想录动态规划06

322. 零钱兑换如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。本题求钱币最小个数,。所以本题并不强调集合是组合还是排列。。。那么我采用coins放在外循环,target在内循环的方式。

2025-03-30 17:38:57 566

原创 代码随想录动态规划05

74.一和零给你一个二进制字符串数组 strs 和两个整数 m 和 n。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集。示例 1:输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4。

2025-03-28 18:06:17 974

原创 代码随想录动态规划04

最小剩余重量=∣S1−S2∣=∣sum−2S1∣\text{最小剩余重量} = |S1 - S2| = |sum - 2S1|最小剩余重量=∣S1−S2∣=∣sum−2S1∣。大家重点理解 递推公式:dp[j] += dp[j - nums[i]],这个公式后面的提问 我们还会用到。遍历物品放在外循环,遍历背包在内循环,且内循环倒序(为了保证物品只使用一次)。,然后将它们一起粉碎。很像了,可以尝试先自己思考做一做。,然后串联起所有整数,可以构造一个。我们可以把所有石头的总重量。有一堆石头,用整数数组。

2025-03-18 23:39:39 890

原创 代码随想录动态规划3(背包问题)

定义一个布尔类型的数组。

2025-03-17 21:55:08 980

原创 代码随想录动态规划2

思路:首先需要一个二维数组记录坐标(i,j),再思考走到终点dp[m-1][n-1]是需要从哪两个方向过来,再思考如何初始化,必须把第一行第一列全部初始化为1,因为只有一种路径,dp[0][0]==1,思路:枚举需要累加所有可能性,dp[0]=1,表示空树也是一种有效的bst树,不会导致后面丢失有效的方案。思路:与上面这道题思路相似,遍历障碍物二维数组,遇到障碍物,直接dp[i][j]=0,表示遇到障碍物后停止初始化为1,保持为0,因为不可能有路径走到这里。返回满足题意的二叉搜索树的种数。

2025-03-16 21:03:28 839 1

原创 代码随想录动态规划

509. 斐波那契数很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定n,请计算F(n)。时间复杂度:O(n) 空间复杂度:O(n)时间复杂度:O(n) 空间复杂度:O(1)

2025-03-15 20:24:28 723

原创 代码随想录day12(二叉树)

递归遍历 (必须掌握)二叉树的三种递归遍历掌握其规律后,其实很简单前序遍历后序遍历中序遍历。

2025-03-10 20:36:56 180

原创 代码随想录day11(栈与队列)

将逆波兰式转化为中缀表达式过程:遇到数字进栈,遇到运算符使栈顶的前两个数字出栈,第一个出站的数字位于右运算位,后出栈的存在于左运算位,然后计算运算结果在压入栈。采用最小堆的原因:当堆中元素超过k时,弹出顶部元素,即最小元素,维护的堆中的频率前k大的元素,最终再将堆中存储的大频率元素一个个弹出。347.前 K 个高频元素 (有点难度,可能代码写不出来,一刷至少需要理解思路)3.stoll的用法,使字符串转化 long long类型的整数。,你要在一场 3V3 的比赛中,每次从一排球员里挑选。

2025-03-05 16:35:34 1040

原创 代码随想录day10(栈与队列)

思想原理:设置一个栈,遍历字符串时,若遇见左括号,则存储右括号;若遇见右括号,则开始匹配,若与栈顶元素相同,则可以两两消去。3.([{}]()左括号有4个,则4个元素进栈,遍历完字符串后,栈中有剩余元素。1.[{}]))) 右括号过多,还未遍历完字符串,栈中元素已经为空。的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。交换字符串头部与尾部位置,是结果直接正确表达,不用交换。上反复执行重复项删除操作,直到无法继续删除。用两个栈来模拟队列,应该熟悉栈的基本操作。225. 用队列实现栈。

2025-03-03 21:27:36 425

原创 代码随想录day08(反转字符串,替换数字)

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。可以尝试思考一下字符题目和数组题目的区别:虽然字符题目和数组题目有时可能会重叠(例如,一个字符串可以被视为字符数组),但是它们的重点和思考方式往往有所不同。具体来说,当你查找一个元素是否在哈希表中时,哈希表会通过哈希函数将元素映射到一个索引位置,从而可以在常数时间内找到元素。2.从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。

2025-01-25 01:01:35 545

原创 代码随想录07(四数相加,四数之和)

454.四数相加II给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组。

2025-01-21 19:41:35 877

原创 代码随想录day06

哈希法使用场景,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词题目链接/文章讲解/视频讲解:注意点:为哈希映射,这样就将字符串s中字符出现的次数,统计出来了。nmhashhash[26]349.两个数组的交集1.建议使用set,(两个数组其中的数差值较大,数量较多)哈希数据结构:unordered_set(已经进行数组去重操作),无序set(自动排序,升序)判断了set是否包含元素10。如果find返回的迭代器不是end(),说明10存在于。

2025-01-19 18:58:28 1083

原创 代码随想录day04

24.两两交换链表中的节点题目链接/文章讲解/视频讲解:两个临时节点(tmp和tmp1tmptmp119.删除链表的倒数第N个节点。

2025-01-18 16:46:02 474

原创 代码随想录day03

在插入操作中,是合法的,表示在链表末尾插入新节点。在删除操作中,是非法的,因为没有size位置的节点可供删除。合法的删除索引是从0到size - 1,因此需要检查来确保不会删除一个不存在的节点。4.下面这段代码的操作表示遍历完成后cur指针指向index节点的前一个节点这段代码表示cur指针遍历完成后指向index这一个节点5.记住在删除节点后将该指针置为空,避免之后的程序不小心使用了tmp,会指向难以想象的空间。

2025-01-11 22:53:42 830

原创 代码随想录day02

一.209.长度最小的子数组滑动窗口问题的关键在于left和right,它们表示窗口的左右边界,初始化时都指向数组的起始位置。2.设一个变量来记录当前窗口的和。3.设一个变量min_length来记录当前找到的最短子数组的长度,初始化为一个很大的值(比如n+1,即数组的最大长度)。4.扩大窗口,寻找终止扩大窗口的条件5.收缩窗口,寻找终止收缩窗口的条件同时更新,看看是否还能保持和大于等于target,每次收缩时,计算当前窗口的长度,更新min_length。易错点:1.targetif。

2025-01-10 20:35:59 1158 1

原创 代码随想录训练营day01

1. 两端向中间收敛(对撞指针)处理有序数组或排序后的数组,解决与区间、和、积相关的问题。主要用于查找满足某种条件的两个元素或多组元素。典型问题:如两数之和(Two Sum)的变种:数组有序,求两个数的和等于目标值。用两个指针分别从数组两端向中间移动,调整两指针的和,直到找到目标值。return {};如三数之和(Three Sum):找到数组中三数相加等于零的所有组合。固定一个数字,然后对剩下的数组使用对撞指针寻找两数之和。如977. 有序数组的平方。

2025-01-08 20:44:14 943 1

空空如也

空空如也

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

TA关注的人

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