- 博客(72)
- 收藏
- 关注
原创 力扣383周赛第三题
只要先耐心下来把题读懂之后这题其实就没那么难了,读懂题之后还有一个关键点就是,我们怎么在1e8时间复杂度之内跑过呢?那么有了这些条件我们就可以过这题了,就是个大模拟的题。本题的难点其实不在思路上,而是有些人遇到这种题就不想做了,题目太长,有点读不懂题。
2024-02-04 12:22:21
484
原创 力扣每日一题 ---- 1906. 查询差绝对值的最小值
那么我们怎么知道区间之内的数有哪些呢,前缀和,但是前缀和我们只知道数有多少个了,那怎么知道该区间有没有这个数,这个我们也是可以通过前缀和知道的,因为我们统计的前缀和是区间内的数字的个数,那么我们就可以知道这个个数了,利用前缀和性质,相减一下就知道个数了。本题中,我们的题目求的是差值的最小值,我们考虑一个因素,当前题目中给出的数组是没有排序过的,那么想要求的差值,是不是要两两配对进行判断差值最小值。这里我们就很费时间了,那么我们利用前缀和求出个数,利用贪心的思想,我们就可以解决这道题目了。
2024-02-03 00:11:37
339
原创 力扣每日一题 ---- 1039. 多边形三角剖分的最低得分
本题中,我们要求的是多边形中能切出的三角形的乘积,我们现在爆搜只是知道多边形中每个三边型的乘积最小值(因为是三角形所以最小值是确定的),并不知道多边形的乘积最小是多少,那么我们三角形其实也算是多边形,但是在本题中他是特殊的三角多边形,而我现在的情况是要求出四边形,五边形,六边型......的乘积最小值,那么知道了这个情况之后,我们再去思考下一步,就是确认是否有递推性质,四边形的最小值是由多个组合的三边形的和中的最小值决定的,那五边形呢?那么知道了解决办法后,还有一个难点就是,怎么算这些多边形的乘积。
2024-01-26 23:57:31
414
原创 力扣每日一题 --- 2746. 字符串连接删减字母
1.1:words[i]的尾部和stri-1的头部相同,那么这种情况拼接之后的头部是words[i]的头部,stri-1的尾部,这个stri-1的尾部我们是不知道具体是哪个的,但是不会超过26个字符的,所以直接遍历尾部。words[i]的头部和stri-1的尾部相同,那么拼接之后就是stri-1的头部和words[i]的尾部,拼接的地方是words[i]的头部。1.2:words[i]的尾部和stri-1的头部不相同。
2024-01-25 15:05:36
551
1
原创 力扣1955,
这个时候我们再考虑下以一个下标为结尾的话能不能优化出来,发现前一个下标状态的方案数可以转移到当前下标的状态的方案数,是有一个规律,比如1 2 3,第四个数是4,前三个的方案数是6,那么转移到第四个的话,总共方案数是多少呢?那么本题中就多了一个条件就是一定要是0,1,2序列才行,那么我们转移时是0,1,2的时候判断一下就行了,比如当前位是1,那么只能从前面结尾是0的序列,和前面有个结尾是1的序列转移过来,两个相加。f[i][1],f[i][2]这个状态怎么办呢?
2024-01-25 14:21:43
454
原创 力扣每日一题 ---- 1970. 你能穿过矩阵的最后一天
用动态规划吗,那太麻烦了,我们知道一个条件,边长为1下可以用bfs,bfs搜到的第一个点就是最少的天数,目前我们知道枚举水的状态,bfs,那么时间是多少呢?会超时,那么我们下一步考虑的就是该怎么优化这题呢?那么其实根据经验我们试一下二分,发现二分水的状态可以,那么就可以二分水的状态bfs就可以了。
2024-01-23 17:55:37
530
原创 力扣每日一题---1601. 最多可达成的换楼请求数目
人,a,b,c,那么当a,b,c去了其他点的话,那么必须要有其他人来1号点,也就是当前点离开的人数一定要等于到当前点的人数,否则就不成立。那么有了一个点有离开人数和到达人数,那么我们是不是想到并查集中的入度和出度,是不是对应离开人数和到达人数,当出度等于入度时条件成立,那么这题用并查集的入度和出度思想,是不是就可以判断当前状态合法,但是我们现在又有个问题,就是哪个状态才是符合最大这个条件,那么截止我们目前解决必要条件中的某一个条件就是怎么解决这个方案是否,那么第二个条件就是哪个状态才是符合最大。
2024-01-21 19:43:11
432
原创 力扣每日一题---1547. 切棍子的最小成本
/本题中我们求的是最小成本,那么需要把所有能组成f[0][4]的最小成本在推导时取个min就可以了。//那么与最后一个2组合的棍子有,1 2,1 1 2,2 1 1 2,1 2 1 1 2。//比如f[1][3] = f[1][2] + f[2][3];//与最后一个1组合的棍子有,1 1,2 1 1,1 2 1 1。//那么想组成f[0][4] = f[0][3] + a[4];//假设1 2 1 1 2,下标对应0 1 2 3 4。//比如棍子长度1 2 1 1 2。//故这就是动态规划的阶段。
2024-01-20 18:05:02
471
原创 力扣每日一题----2209. 用地毯覆盖后的最少白色砖块
/怎么贪以第j个位置为结尾的话,那么必然是贪以j - carpetlen这个位置是最好的,可以确保覆盖的白色。//那么此时我们的状态定义就变成了f[i][j]是枚举第i块放上之后以j为结尾位置时的白砖块最少数目。//目前根据前面的说明,我们很显然知道f[i][j]是枚举第i块放到j为起始位置时的白砖块最少数目。//枚举第一块的时候,我们有1000中选择,枚举第二块的时候,因为可以重复覆盖。//又有1000种选择,那么枚举第二快的时候,第二块的状态是由枚举第一块的状态。//那么我们的第一个状态怎么解释呢?
2024-01-19 17:46:13
378
原创 力扣每日一题 1937. 扣分后的最大得分
本题中其实本质是一个线性DP,根据行数从上往下选,先选第一层的一个数,再选第二层,最后再选到最后一层,但是本题中我们有个重要的条件,就是选出最大得分,那么每层选最大,在往下选最大,能得到最大得分吗?不一定,这个其实是有点贪心,其实不是,因为我们还有一个条件,abs(j - k),j是当前坐标的列号,k是上层选的坐标的列号,那么这个不能确定的话,我们是不能从前面最大得分,推导到下层的最大得分,假如说没有abs(j - k)这个条件,我们可以从前面i - 1层中选出最大的,到前面i层中选出最大的。
2024-01-17 18:35:25
427
原创 力扣每日一题--2088. 统计农场中肥沃金字塔的数目
但是我们仔细想想的话,根据前面的推导,我们在向上推的话,我们是不是只能推导到金字塔尖,那么如果不是金子塔尖呢?找子问题,那么我们是不是可以想一下,最顶上的金子塔尖,是不是可以从下层的金字塔尖推上去,是可以的,我们只用知道左下角,下方,右下角上来就知道了,去个min就可以了,那么状态转移方程就是。以正金字塔为例子,一是预处理出来,但是这样复杂度还是比较高,那么我们是不是可以想一下从下往上遍历的话,我们是不是就可以固定金字塔的高度了,比如当前点是i,j,那可以从i + 2到i + 1,i + 1到i。
2024-01-16 00:25:39
475
1
原创 迟到的题解,力扣周赛第四题100207. 找出数组中的美丽下标 II
就是在第二题的基础上预处理a数组和b数组的用的find改成kmp算法进行预处理下标。
2024-01-14 22:16:01
369
1
原创 力扣双周赛第三题----2857. 统计距离为 k 的点对
i和k-i,有了这个之后我们还是要遍历点的数组,因为我们其实是拿着点的坐标去暴力枚举i,k-i去试出来是否等于k,为什么这样可以呢?所以我们是要优化统计这部分,我们先找到一个性质,key值x1,y1里的元素是不是顺序的,肯定是递增顺序的,这个不好证明,如果想去证明可以自己去证明,但是这是个很显然的性质,只要我们预处理的时候是按照下标顺序遍历的话,那么预处理出来的key值对应的元素也一定是按照顺序进行存储的,所以有了顺序性,那么我们就可以用二分来找到大于等于外层循环的下标的最小值,
2024-01-13 17:43:51
504
原创 力扣每日一题-----2998使X和Y相对的最少操作次数
就算是暴搜的话,我们也得是越趋近那个值才行把,不是漫无目的的去爆搜把,那么我们就可以根据这个问题去看,怎么趋近,如果x < y的话,那么不可能是1,2,3操作,那么我们知道这个性质了,那么执行其他操作了的话,是不是也可以通过这个分析出来啊。我们采取爆搜的方式搜,如果是采用第二种操作的话,那么我们不知道是先放大再整除5来的小,还是先缩小再整除5来的小,同理第一种操作也是一样,放大缩小的数可以计算出来,是的,那么如果y > x的话,怎么样呢,这个其实就有三种情况了,具体是哪个我们不清楚。
2024-01-10 15:56:08
515
1
原创 每日一题 --- 2477. 到达首都的最少油耗
因为我们可以看做从当前节点出发到当前节点的根节点的话,那么需要知道当前节点叶子节点个数,也就是我们让当前节点的叶子结点(代表)先来到当前节点集合,那么这就是一个子问题。核心点是我dfs两次,第一次是求出每个节点的叶子节点有多少个?那么对于子问题解法,我们可以记忆化搜索或者利用递归特性。本题采用记忆化搜索解法来解决。
2023-12-14 15:56:30
140
1
原创 力扣每日一题----2008. 出租车的最大盈利
那么我们就可以去看题目,题目又是最多盈利多少元?那么很容易联想到动态规划,并且我们又发现该数组排个序之后可以让其递归时某个状态呈现出递推性质,那么我们就确定是动态规划算法了。为以当前i为结尾的话,我们必须记录第i个为下车点的时候值,如果没有那么就得是f[i] = 0,那么这样就比较麻烦,其实应该也是可以做的,只是这样做很麻烦。那么我们就以f[i]表示以当前i为下车点的最大值,那么这样去定义可以吗,其实是不太行的,因。那么我们试想以下这样去定义,f[i]表示在1~i之内接到的乘客的最大利润,那么我们发现,
2023-12-12 22:18:59
103
原创 C/C++程序员必备技能 ---- 内存泄漏检测
使用宏定义,替换系统的内存分配函数,并在内部添加位置信息,实现监控这里,使用了系统宏定义,来追踪位置信息。__FILE__,正在编译文件的文件名__LINE__,正在编译文件的行号。
2023-12-10 19:50:22
668
原创 kafka常见问题处理
消息的消费者的消费速度远赶不上⽣产者的⽣产消息的速度,导致kafka中有⼤量的数据没有被消费。随着没有被消费的数据堆积越多,消费者寻址的性能会越来越差,最后导致整个kafka对外提供的服务的性能很差,从⽽造成其他服务也访问速度变慢,造成服务雪崩。在防⽌消息丢失的⽅案中,如果⽣产者发送完消息后,因为⽹络抖动,没有收到ack,但实际上broker已经收到了。该消费者将poll下来的消息,不进⾏消费,直接转发到新建的主题上。创建多个消费组,多个消费者,部署到其他机器上,⼀起消费,提⾼消费者的消费速度。
2023-12-09 11:25:25
375
原创 深入浅出分析kafka客户端程序设计 ----- 消费者篇----万字总结
再平衡回调函数负责对基于RdKafka::ERR_ASSIGN_PARTITIONS和RdKafka::ERR_REVOKE_PARTITIONS事件更新rdkafka的分区分配,也能处理任意前两者错误除外其它再平衡失败错误。没有再平衡回调函数,rdkafka也能自动完成再平衡过程,但注册一个再平衡回调函数可以使应用程序在执行其它操作时拥有更大的灵活性,例如从指定位置获取位移或手动提交位移。事件的触发是由 Kafka broker 和 Kafka consumer 之间的交互而引起的。
2023-12-07 22:39:06
357
2
原创 深入浅出分析kafka客户端程序设计 ----- 生产者篇----万字总结
深入浅出分析kafka客户端程序设计 ----- 生产者篇----万字总结
2023-12-07 19:14:57
839
5
原创 使用C语言操作kafka ---- librdkafka
一个分区只能被一个消费者读取。如果一个topic只有一个分区,多个消费者读取时只有一个消费者能读到数据;单个分区开启多个消费者去读取数据是没有意义的。
2023-12-06 12:16:59
971
2
原创 怎么做到高性能网络IO?
最开始的时候我们走的内核协议栈,走内核协议栈其实性能比较低,因为我们之前介绍的时候需要拷贝两次但是我们采用用户态协议栈可以少拷贝一次,可以大大提高效率,步骤:1)客户端请求数据,先经过网卡,服务器需要从网卡copy数据到内核协议栈(tcp/bsd)。2)再从内核协议栈copy数据到应用程序。由此可见,客户端与应用程序之间的数据交互,多了两次数据拷贝的操作,在大量数据并发的情况下,必将会严重影响性能。优化思路:可以跳过内核协议栈,去除拷贝操作,数据直接从网卡到应用程序,这种方式称为零拷贝。
2023-11-12 22:53:54
469
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人