自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第459场周赛

摘要 判断整除性:给定正整数n,判断n是否能被其数字和与数字积之和整除。通过计算数字和、数字积并验证整除性实现。 统计梯形数目I:在二维点集中统计由四个点组成的水平梯形数量。通过分组统计平行边并计算组合数实现。 位计数深度II:计算数组中每个数的二进制位计数深度,支持查询区间内深度为k的数的数量及单点更新。使用树状数组优化查询效率。 统计梯形数目II:统计任意梯形数量,通过斜率分组计算平行边组合数,并减去重复统计的平行四边形。 代码均采用高效算法处理大规模数据,时间复杂度优化至合理范围。

2025-07-20 22:28:04 622

原创 吃透二分法的模板解法(适合所有类似于二分的算法题)

文章摘要:本文介绍了三种二分查找变体的实现方法,用于在有序数组中寻找第一个大于等于目标值的位置。第一种使用闭区间[left,right],第二种采用左闭右开区间[left,right),第三种使用双开区间(left,right)。每种方法都通过调整左右边界和循环条件来实现。文章还解释了如何通过简单转换解决其他四种类似问题:第一个大于、最后一个小于、最后一个小于等于目标值的情况。这些方法的核心在于正确处理边界条件和终止条件,确保算法正确性和效率。

2025-07-08 23:57:03 325

原创 Linux课程笔记

本文总结了Linux基础命令与常用操作。主要内容包括:Linux目录结构、文件管理命令(如ls、mkdir、touch)、内容查看命令(cat、more)、文件操作命令(cp、mv、rm)、搜索命令(find、grep)、统计命令(wc)、管道符和重定向等。还介绍了vi编辑器使用、软件安装方法(yum/apt)、系统服务管理(systemctl)、软链接创建以及日期格式化等实用操作。这些命令涵盖了Linux系统的基本文件操作和日常管理功能,是使用Linux系统的基础知识。

2025-06-16 23:26:25 558

原创 力扣第 454 场周赛

摘要:本文包含4道算法题的解决方案:1.视频标题标签生成.2.统计特殊三元组.3.子序列首尾元素最大乘积.4.树中带权中位节点/

2025-06-15 15:48:04 1298

原创 MYSQL多表查询

本文总结了数据库多表关系的三种类型:一对多、多对多和一对一。重点介绍了多表查询方法,包括内连接、外连接和自连接等连接方式,以及联合查询和各类子查询(标量、列、行、表)的应用示例。最后提到可以通过实际练习来掌握多表查询技巧。全文简明扼要地概括了数据库多表操作的核心知识点。

2025-06-11 21:29:11 262

原创 函数和约束

摘要:本文介绍MySQL常用函数和约束。字符串函数如SUBSTRING从1开始索引;数值函数用于数学运算;日期函数如DATEDIFF计算日期差。流程函数控制程序逻辑。约束包括外键约束,定义表间关系,可通过设置删除/更新行为(如CASCADE)维护数据完整性。外键约束需注意参照完整性,指定删除更新时的级联操作。

2025-06-10 23:56:10 160

原创 DQL和DCL(基础知识)

DQL(数据查询语言)包含基本查询、条件查询、聚合函数、分组、排序和分页等功能,执行顺序遵循特定规则。DCL(数据控制语言)用于管理用户账户和权限控制。二者共同构成了数据库操作的重要组成部分,DQL侧重数据检索,DCL负责安全管理,为数据库系统提供完整的操作支持。

2025-06-10 23:10:33 343

原创 DDL和DML(基础知识)

本文介绍数据库操作语言DDL和DML的基本概念。DDL包含表的创建(定义数值、字符串、日期等数据类型)、修改和删除操作。数值类型需注意精度和标度的区别。DML则涵盖数据的添加、修改和删除操作。这些操作是数据库管理的基础,涉及表结构和数据的维护。

2025-06-09 23:11:16 190

原创 力扣第1234道题目

对于本题,设子串的左右端点为 left 和 right,枚举 right,如果子串外的任意字符的出现次数都不超过 m,则说明从 left 到 right 的这段子串可以是待替换子串,用其长度 right−left+1 更新答案的最小值,并向右移动 left,缩小子串长度。反过来说,如果在待替换子串之外的任意字符的出现次数都不超过 m,那么可以通过替换,使 s 为平衡字符串,即每个字符的出现次数均为 m。我们需要把一个 'Q' 替换成 'R',这样得到的 "RQWE" (或 "QRWE") 是平衡的。

2024-10-24 23:23:10 471 1

原创 第 420 场周赛

后序遍历的同时,计算每个节点 i 在后序遍历中的开始时间戳和结束时间戳,这也是子树 i 的后序遍历字符串在 dfsStr 上的开始下标和结束下标(代码用的左闭右开区间)。滑动窗口的内层循环结束时,右端点固定在 right,左端点在 0,1,2,⋯,left−1 的所有子串都是合法的,这一共有 left 个,加入答案。细节:建图时,由于我们是从左到右遍历 parent 数组的,下标 i 是递增的,所以子节点列表一定是升序,所以无需排序。子树的后序遍历字符串,是整棵树的后序遍历字符串的子串。

2024-10-20 20:35:18 1200

原创 力扣第 418 场周赛

从其中一个度数为 2 的点(拼图的角)开始,不断寻找度数等于 3 的点(拼图的边),直到找到度数为 2 的点(拼图的另一个角)为止。比如 gcdPairs=[1,1,2,2,3,3,3],对应的 gcdCnt=[0,2,2,3],计算其前缀和,得 s=[0,2,4,7]。如果删除后无法编译(剩余的方法调用了删除的方法),那么返回数组 [0,1,2,⋯,n−1]。遍历 invocations,如果存在从「非可疑方法」到「可疑方法」的边,则删除后无法编译,返回数组 [0,1,2,⋯,n−1]。

2024-10-09 16:20:43 879

原创 力扣第 140 场双周赛

如果 s[i]不等于t[j] 且 suf[i+1]≤j+1,说明修改 s[i] 为 t[j] 后,t[j+1:] 是 s[i+1:] 的子序列。回到原问题,我们枚举 i=0,1,⋯,n−m,那么当前需要匹配的子串为 s[i..i+m−1],对应的 Z 数组元素为 preZ[i+m] 和 sufZ[i+m−1]。如果 s[i]=t[j],既然能匹配上,那么就立刻匹配,直接把 i 加入答案。定义 suf[i] 为 s[i:] 对应的 t 的最长后缀的开始下标 j,即 t[j:] 是 s[i:] 的子序列。

2024-09-29 10:55:40 882

原创 力扣第 415 场周赛

如果选 b[i],那么需要解决的问题为:从 b[0] 到 b[i−1] 选 j 个数,与 a[0] 到 a[j−1] 计算点积,结果的最大值,即 dfs(i−1,j−1)+a[j]⋅b[i]。如果不选 b[i],那么需要解决的问题为:从 b[0] 到 b[i−1] 选 j+1 个数,与 a[0] 到 a[j] 计算点积,结果的最大值,即 dfs(i−1,j)。因此,定义状态为 dfs(i,j),表示从 b[0] 到 b[i] 选 j+1 个数,与 a[0] 到 a[j] 计算点积,结果的最大值。

2024-09-16 21:26:45 1394

原创 力扣第 414 场周赛

现在问题变成当前马在第 j 个兵的位置,且剩余没有被吃掉的兵的集合为 mask∖{j} 的情况下,继续游戏,两名玩家的总移动次数的最大值,即 dfs(j,mask∖{j})。因此,定义状态为 dfs(i,mask),表示当前马在第 i 个兵的位置,且剩余没有被吃掉的兵的集合为 mask 的情况下,继续游戏,两名玩家的总移动次数的最大值。如何判断当前是谁在操作?如果当前是 Alice 操作,则有dfs(i,mask)= max(j∈mask)dfs(j,mask∖{j})+dis[j][x][y]

2024-09-08 20:19:59 1361

原创 力扣第 413 场周赛

又例如数组为 [a,b,c,d],那么操作一次后变成 [ab,bc,cd],再操作一次,变成 [ab^2c,bc^2d],再操作一次,得到 ab^3c^3d。最大值对应的子数组,右端点不是 j,那么问题变成下标从 i 到 j−1 的子数组中的所有子数组的 f 值的最大值,即 mx[i][j−1]。最大值对应的子数组,左端点不是 i,那么问题变成下标从 i+1 到 j 的子数组中的所有子数组的 f 值的最大值,即 mx[i+1][j]。,它们的异或值分别为 2, 8, 4, 10, 12, 和 6。

2024-09-01 23:51:03 915

原创 力扣第 138 场双周赛

那么 2020 可以重新排列得到 2002 ,2002 是一个 k 回文串,所以 2020 是一个好整数。如果发现相邻两个敌人不满足上面的不等式,就交换这两个敌人的位置,这可以让受到的总伤害变小。首先,一直攻击同一个敌人,相比来回攻击多个敌人(雨露均沾)更好,因为这样我们被敌人攻击的次数更少。本质上来说,这个不断交换相邻敌人的过程,和冒泡排序是一样的。推广到更多的敌人,可以按照上式对 damage 和 health 排序,理由如下。从特殊到一般,想一想,如果只有两个敌人 A 和 B,我们应该先攻击谁?

2024-09-01 21:14:37 851

原创 第 412 场周赛

2.首先,直接用暴力模拟(用最小堆),直到原来的最大值,变成最小值,然后直接用公式计算出每个数还需要操作多少次。思路:用第二题的方法会超时,因此赛后找到别人的解法采用反向思维一下,我们遍历数组,将每个数的任意两个数字进行交换,查看多少能撞到一起的个数。思路:1.当nums只有两个数的时候,如果我们操作到两个数接近也就是x<=y且x*m>y,那么后续操作一定是在x和y两个数之间交替进行的,,执行操作后得到的整数可以有前导 0。,执行操作后一个整数可以有前导 0。数组中的任意两个元素都是近似相等的。

2024-08-25 17:28:21 1393

原创 第 411 场周赛

记录自己力扣周赛的过程,锻炼算法能力

2024-08-19 11:10:27 1212

原创 致以后的自己

在研究生阶段自己先放松一两个月,想着自己应该为自己的工作冲刺了,当时想好冲刺Java了,于是自己便跟着网上的课程一个一个学,力扣每日一题的刷,于是便到秋招的日子了,自己差不多在8月份的时候也一个一个的海投简历,有笔就笔,有面就面,可是最终简历大部分都挂了,有好几个可以拿到30w左右的offer(菜鸟,同程,Anker)最终技术面都过了,但是最终却挂在了hr面上,有些技术面感觉答的都很好(京东,知乎),结果最后也莫名奇妙的挂了,起码提的问题感觉都回答上来了。保持好的工作状态,将自己的工作内容完成好。

2024-08-13 17:50:22 458 1

空空如也

空空如也

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

TA关注的人

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