自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 3397. 执行操作后不同元素的最大数量

​ 问题在于​ 进行了很多重复判断,于是考虑在时使用一个Max存储当前的最大值。

2025-10-18 11:05:38 138

原创 15 三数之和(自定义hash函数)

中每个元素进行哈希计算,并结合使用合适的哈希算法来计算总哈希值。是基于哈希表实现的,其查找、插入、删除操作的平均时间复杂度是。来提高性能,因为哈希表的查找、插入和删除操作时间复杂度是。是基于红黑树(平衡二叉搜索树)实现的,操作的时间复杂度是。内的元素生成一个哈希值,避免哈希冲突。来存储结果,这样可以避免重复三元组的情况。来存储三元组,确保每个三元组都是唯一的。实现一个简单的哈希函数。哈希函数的目的是根据。主要是为了提高查找和插入的效率,因为。,这样就可以利用哈希表存储三元组了。在原始代码中,使用了。

2025-01-12 21:36:25 581

原创 2275按位与结果大于零的最长组合

当前的代码通过遍历每个候选数,将每个数按二进制位拆分,并统计每个位上有多少个数是“1”,然后找出最大位上的“1”的数量。我们可以发现,如果两个数字存在至少一位二进制位都为1,那么这两个数字。我们只需统计各个二进制位上数字出现的次数。,因此我们只需统计0到24位上出现的次数即可。要求找到返回按位与结果大于。所以将某个位上为1的数一起。组合的长度即次数最多的。,所得结果一定大于0。

2025-01-12 01:11:15 692

原创 如何理解类的静态成员变量在编译时就分配了内存

静态成员变量在编译时只确定了一个相对地址或符号地址,它的实际运行地址(物理地址或虚拟地址)是在程序加载到内存时由操作系统决定的。因此,编译器在生成代码时只记录“相对地址”,最终的物理地址是动态映射的。这种机制也使得程序可以在不同的内存布局或操作系统下运行,而不需要修改代码。

2025-01-10 23:19:52 766

原创 分割回文串

我们选取的最长回文子串应该将整个字符串划分为三个部分即 子串左边 子串 子串右边。设置一个dp数组,dp[i]表示对于字符串s的0到i段最少需要划分几次。要求分割的次数最少,那么我们每次分割都应该取最长的回文子串进行分割。如果 子串左边 为空,那么只需要一次划分;如果0到i的子串是一个回文串,那么它不需要继续划分dp[i]=0。设计一个递归函数,在本次递归时找出最长回文子串,并进行划分。如果 子串左边 和 子串右边 都不为空 那么需要两次划分。单独分割出来作为一个回文子串。是回文,那么可以在位置。

2025-01-10 20:03:46 788

原创 3217 从链表中删除再数组中存在的节点

上面代码编写的非常难受,我认为究其根本在于我想要删除当前结点。我先创一个空结点在表头,然后依次删除下一个结点,这样会简单很多。

2025-01-09 18:33:16 185

原创 3297 统计重新排列后包含另一个字符串的子字符串数目

通过示例我们可以看出,只要子串内包含第二个字符串的所有字符,它就是一个合法的子字符串。

2025-01-09 12:20:20 709

原创 3412 计算字符串的镜像分数

非常遗憾的超时了,不过在调试的时候我发现存入map中的vector数组是递增有序的,所以我们匹配时只要匹配vector的最后一个就行,当我们匹配完后就可以把这个被标记的元素从vector中删除,这样就不用使用flag标记来进行判断,既可以节省时间又能节省flag数组的空间开销。如果用下面这种方法是会报错的,因为就算我们把vector中的最后一个元素弹出了,vector仍然存在。成功跑过了所有测试用例,代码长度还变短了,哈哈哈。用flag记录有没有被标记过。代码中的这一段值得单独一说,

2025-01-08 20:13:44 247

原创 3259 超级饮料的最大强化能量

即如果对方数组的第i+2回合的能量大于本数组的i+1和i+2能量之和就值得切换。时发现上面的贪心算法会陷入局部最优,它不会选择在a遍历到第四个元素时选择更换b。如果在i切换数组,则数组a,b的i+1回合的能量都无法获得。只过了498个样例。

2025-01-06 19:21:47 133

原创 116 填充每个节点的下一个右侧指针.md

所以next指针为NULL的节点为 2的n次方减一个节点。isPowerOfTwoMinusOne(sum)) { // 如果它不是二的 n 次方减一。if (currentnode) { // 只有在当前节点非 NULL 时才处理。// 如果根节点为空,直接返回 NULL。void Level_Order(Node* root){//存储当前节点和上一个节点。//sum为二的n次方减一时往节点后插入NULL。// 返回修改后的根节点。//队列用于层序遍历。// 将两个子节点入队。

2025-01-06 00:01:53 247

原创 2241 设计一个ATM机

/计算amount与value[5-i-1]的相除结果,这表示理想情况下amount应该由result个value[5-i-1]构成,其中value[5-i-1]为当前面值。if (result > deposittemp[5 - i - 1]) {//如果当前面值存款不够,取出全部的当前面值。if (result > deposittemp[index]) { // 如果当前面值存款不够,取出全部的当前面值。} else { // 如果当前面值存款足够,取出理想情况的当前面值。

2025-01-05 20:09:24 695

原创 3 无重复字符的最长子串

对于字符串s,使用两个指针i,j。当子串中出现重复元素导致条件被破坏时,将指针j向后遍历,直至满足条件。if(x.find(s[i])==NULL){//如果x中没有出现过这个元素,将元素加入x中,将指针i继续右移。int f(int i, string s){//f用于找到从i开始的无重复字符的最长子串。else{//如果x中出现过这个元素,把s[j]从集合中删除,把j右移。当i到达字符串s的最右边时遍历结束,最长子串的长度即为便利过程中i,j的最大差值。尽管采取了一定优化,但排名仍然惨不忍睹。

2025-01-01 21:36:40 362

原创 296 最佳碰头地点

再次分析题目中的距离,找出行和列的距离其实是两个不相关的子问题,如果我们把行和列分开来看,我们只需要分别找到使行距离最短的点和使列距离最短的点。想象一个更大的情况,许多的 1 聚集在右边,只有一个 1 在最左边。j++){//找出现在点距离朋友的距离。int distance(vector<int> a, int k){//k距离其他朋友的距离。采用暴力搜索,对每一个位置全部计算一次到朋友家的距离,再选取最小值,不出所料的超时了。//D存储点到朋友的距离。//D存储点到朋友的距离。

2025-01-01 20:52:03 688

原创 二叉搜索树的最小绝对差

实际上,二叉搜索树的中序遍历本质上是有序的,因此不需要额外存储所有节点值,只需在遍历的过程中记录上一个节点的值,并实时计算最小差值即可。这样可以将空间复杂度从 O(n)O(n)O(n) 降低到 O(1)O(1)O(1)(不考虑递归调用栈的开销)。//找到相邻元素的最小差值。= -1) { // 只有当 prevVal 有值时才计算差值。// 用于记录中序遍历时的前一个节点值。if(root==NULL){//如果传入的节点是空节点则返回。void f(TreeNode* root){//中序遍历树。

2025-01-01 11:53:15 1432

原创 leetcode 3280 将日期转换为二进制表示

int i=0;='-'){i++;i++;='-'){i++;i++;i++;先使用vector<int>暂存i++){i++){i++){将链表中的存储的值转换为int型数存储,方便后续进行二进制转换。

2025-01-01 11:24:33 1672

原创 leetcode 3218_切蛋糕的最小开销

这里最后还是采用了官方给出的题解,现在来看本题的重点在于了解如果horizontalCut中的最大值大于verticalCut中的最大值,那么他们成对应的行数和列数仍然具备这种关系。拿到题目时首先考虑到对于每次切割之后会变成两份蛋糕,我仍需对这两份蛋糕做切割,这种思想类似于递归。如果切割到蛋糕的行列都为1也就不能再切割了。我们可以使用贪心法的思想,先把切割带来的消耗从大到小排好序,再按照顺序依次切割。在上面的基础使用索引表示切割范围,而不是复制新的数组。来表示子问题的切割数组,导致了较高的内存开销。

2024-12-31 17:35:42 1289

空空如也

空空如也

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

TA关注的人

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