- 博客(13)
- 收藏
- 关注
原创 字符串常见函数总结及例题 | 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。通过类似双指针的方法,如果有数字字符则从后往前输入number,否则把字符换到当前右指针指向地方。编写一个函数,其作用是将输入的字符串反转过来。打印一个新的字符串,其中每个数字字符都被替换为了number。,从字符串开头算起,每计数至。计算数字数量,扩宽字符串长度。
2025-04-08 21:07:17
484
原创 代码随想录算法训练营第七天 | 454.四数相加II 383.赎金信 15. 三数之和 18. 四数之和
如果本题想难度升级:就是给出一个数组(而不是四个数组),在这里找出四个元素相加等于0,答案中不可以包含重复的四元组,大家可以思考一下,后续的文章我也会讲到的。之间的所有元素,从而可以快速查找是否存在满足条件的。**注意:**答案中不可以包含重复的三元组。请你找出并返回满足下述全部条件且。中始终包含了从当前固定第一个数。来存储数组中某些元素的。的作用是查找是否存在一个数。是通过在内层循环中逐个插入。,请你计算有多少个元组。,判断是否存在三元组。开始,到当前遍历位置。
2025-04-08 16:35:43
516
原创 代码随想录算法训练营第六天 |242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
数组就是一张哈希表,关键码就是数组下标,一般哈希表都是用来快速判断一个元素是否出现在集合里。,例如想查找一个学生的名字,我们可以把所有学生名字映射在哈希表上,通过索引下标即可查询,这就是哈希函数。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入: s = “anagram”, t = “nagaram”:如果当前位置冲突,就把该元素向下寻找空位,依次进行。整数,并返回它们的数组下标。
2025-04-01 00:28:49
284
原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1。 双指针:每一个节点有两个指针域,一个指向前一个节点,一个指向后一个指针;从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。
2025-03-30 16:38:23
629
原创 代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成:数据域(记录当前节点的数据)和指针域(记录下一个节点的指针位置,最后一个节点指针域是null,称为空指针)。注意:C++默认生成节点的构造函数,所以代码中可以不构造,但自己不构造的话,初始化的时候不能直接给变量赋值。 双指针:每一个节点有两个指针域,一个指向前一个节点,一个指向后一个指针; 如有A,B,C三个节点,删除B,只需要将A的next指针指向C就可以,然后手动释放B节点内存;,请你反转链表,并返回反转后的链表。
2025-03-30 01:16:56
483
原创 代码随想录算法训练营第二天 | 209.长度最小的子数组 59.螺旋矩阵II 开发商购买土地
可以把他看作一道二维前缀和的题目,题目要求可以横分或竖分,我们可以读取后分别计算出他每一横排的前缀和和每一竖排的前缀和,然后再利用一层for循环分别计算出横排时划分区域后得到的最小差额和竖排划分区域后的最小差额,这样就求出来了。在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。接下来的 n 行,每行输出 m 个正整数。
2025-03-28 19:22:45
323
原创 代码随想录算法训练营第一天 | 704.二分 27.移除元素 977.有序数组平方
暴力的解法,可以锻炼一下我们的代码实现能力,先把暴力写法写一遍。target是在一个左闭右闭的区间,[left,right]target是在一个左闭右开的区间,[left,right)双指针法:借助两个快慢指针实现时间复杂度的优化。时间复杂度是O(n+nlogn)977.有序数组的平方。
2025-03-28 09:55:59
134
原创 DP之状态压缩 例题小国王
所谓状态压缩,就是将一行的状态压缩成一个数,这个数的二进制形式反映了这一行的情况,利用二进制位运算来实现具体操作。位运算相关知识: 状态压缩是比较难的一类DP,他反映了利用位运算进行相关操作的知识,也有动态规划的内容,一般用在难以用数组表现出来的DP问题。 下面将用经典例子来解释这类问题:思路(最详细的解释!):(1)首先我们要明确题目意思,拿样例来说,在3×3的棋盘放两个棋子,每个棋子周围八个格子不能出现其他棋子,问最多的方案数,画图来体现就是:在此情况下,求放两颗棋子的方案数,那么还是以
2025-01-23 12:48:48
382
原创 DP之01背包问题(看这篇就完事)
用二维数组f[i][j]来表示前i个物品,背包容量j下的最优解,当背包容量为j的时候,如果j小于当前i的体积,那对应的以i的物品位置、j的背包容量下的最大价值为上一个i的最大容量,即f[i][j]=f[i-1][j];(2)放入第i个物品,剩余的背包容量变为j-v[i],此时的价值是f[i-1][j-v[i]]+w[i](即前i-1个物品,背包容量为j-v[i]时的最优解,再加上第i个物品的价值w[i])。f[j-v[i]]+w[i]表示放入第i个物品后,背包容量为j时的最大价值。
2025-01-16 20:17:21
2391
原创 线性DP LIS 最长上升子序列
为:读入a[i],从1到n利用循环记录dp[i],如果当前的a[i]大于a[j],那就意味着a[i]可以加入到以a[j]结尾的子序列中,在这种情况下我们可以更新dp[i]的值,取dp[i]和dp[j]+1的最大值(加1表示在a[j]的基础上添加a[i]至末尾)。:f[i]代表以a[i]为终点的最长上升子序列,g[i]代表以a[i]为起点的最长下降子序列,因为在f[i]和g[i]都计算了一次a[i],所以要减去1,求和-1之后的数量就是以某个元素为转折点的先上升后下降的长度。例如1 2 4 1 3 4。
2025-01-15 15:27:42
1214
原创 DP之数字三角形问题
化简解决思路:既然该题要读入再根据条件进行相加,那我们就可以在读入的时候直接比较然后相加,如此一来可直接得到最大路径,上一个思路是从上到下,这一个思路可类比一下递归,从下到上,例如图中的1,可以让上一行3 8比较,结果8大,那就让该数+8,这样就求得了第二行到第三行中的1的最大路径,如此进行相加,最终可在第n行得到一个result数组,该数组记录了顶点到每一个底部顶点的最大路径,比较可得出最大路径值。:读入数组,从下往下摘花生,如果初始位置是dp[0][0],那么终点位置是dp[r-1][c-1]。
2025-01-14 15:39:39
1736
原创 Java设计之银行管理系统开发资源
随着计算机技术飞速发展及其应用领域的扩大,特别是计算机网络和电子商务的发展,极大地改变了商业银行传统的经营和管理模式。能够为客户提供方便、快捷、安全的服务,也能有效降低银行的运营成本,这是银行管理系统追求的目标。目前,对于现代化银行运营的要求是客户可以实现随时随地的业务交易,银行职员可以进行高效合理的工作管理,实现银行业务电子化。
2024-12-16 01:18:55
259
原创 C++语法总结一
若求上一个排列,则用prev_permutation。sizeof()用来获取对象所占内存空间的大小。若下一个排列存在,则返回真,如果不存在则返回假。
2024-09-19 19:28:59
323
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人