- 博客(37)
- 收藏
- 关注
原创 算法:矩形区域不超过k的数值和
的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。,找出并返回矩阵内部矩形区域的不超过。题目数据保证总会存在一个数值和不超过。蓝色边框圈出来的矩形区域。
2025-11-09 22:13:44
192
原创 算法:合并石头的最低成本
返回把所有石头合并成一堆的最低成本。如果无法合并成一堆,返回。合并 [3, 2],成本为 5,剩下 [5, 4, 1]。合并 [4, 1],成本为 5,剩下 [5, 5]。合并 [5, 5],成本为 10,剩下 [10]。堆石头合并为一堆,而这次移动的成本为这。从 [3, 2, 4, 1] 开始。总成本 20,这是可能的最小值。
2025-11-09 21:39:50
176
原创 算法:水位上升中的游泳池中游泳-二分+DFS
当然,在你游泳的时候你必须待在坐标方格里面。个人觉得这个算法题非常好,二分算法和DFS算法的结合,广度优先算法用于算最少的步骤,并不适合本题,但直接DFS暴力搜索,需要穷举所有的可能性才能得到最少时间,采用二分查找+DFS结合可以提升性能。等时间到达 3 时,你才可以游向平台 (1, 1). 因为此时的水位是 3,坐标方格中的平台没有比水位 3 更高的,所以你可以游向坐标方格中的任意位置。此时你不能游向任意方向,因为四个相邻方向平台的高度都大于当前时间为 0 时的水位。时间为0时,你位于坐标方格的位置为。
2025-11-09 11:36:02
150
原创 算法:雇佣K名工人的最低成本
我们向 0 号工人支付 70,向 2 号工人支付 35。组成满足上述条件的付费群体所需的最小金额。名工人的工作质量,其最低期望工资为。,由这个式子可以得到只要找到。与实际答案误差相差在。假设需要的支付的总薪资是。以内的答案将被接受。
2025-11-02 14:00:27
146
原创 贪心算法:IPO
为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。由于你最多可以选择两个项目,所以你需要完成 2 号项目以获得最大的资本。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。因此,输出最后最大化的资本,为 0 + 1 + 3 = 4。典型的贪心算法:在启动资金允许的范围内选择收益最大的项目。在完成后,你将获得 1 的利润,你的总资本将变为 1。由于你的初始资本为 0,你仅可以从 0 号项目开始。个不同项目后得到最大总资本的方式。个不同项目的列表,以。
2025-11-02 12:48:45
315
原创 算法:矩形面积II
从(1,1)到(2,2),绿色矩形和红色矩形重叠。如图所示,三个矩形覆盖了总面积为 6 的区域。任何被两个或多个矩形覆盖的区域应只计算。从(1,0)到(2,3),三个矩形都重叠。给你一个轴对齐的二维数组。因为答案可能太大,返回。线性扫描+线段树有花。
2025-10-26 17:16:36
151
原创 算法:并行课程II
上图展示了题目输入的图。在第一个学期中,我们可以上课程 2 和课程 3。然后第二个学期上课程 1 ,第三个学期上课程 4。请你返回上完所有课最少需要多少个学期。题目保证一定存在一种上完所有课的方式。门课,前提是这些课的先修课在之前的学期里已经上过了。表示一个先修课的关系,也就是课程。表示某所大学里课程的数目,编号为。
2025-10-25 22:02:15
291
原创 算法题:安排邮筒
下面的解题思路,刚开始学习的时候一直不理解,别人是怎么想到的,但是当自己尝试用DFS去做这个题,想到了上面的DFS大致代码时,瞬间理解了下面的动态规划思路。栋房子在一条街上的位置,现需要在这条街上安排。请你返回每栋房子与离它最近的邮筒之间的距离的。答案保证在 32 位有符号整数范围以内。
2025-10-25 21:10:25
235
原创 冗余连接 II
情况一:4-3这条边被后面遍历,2-3这边边的表示是2:parent[conflictEdge[1]], 3:conflictEdge[1]情况二:2-3这条边被后面遍历,存环判断代码没有走到,而是走了冲突边判断,这个时候就会变成有冲突但是没有环,2-3这条边就是冲突的边。
2025-09-07 16:49:32
212
原创 可怜的小猪
将水编号,选择其中一瓶水没有小猪喝,选择一瓶水2个小猪一起喝(从N小小猪中选2头),选择一瓶水3个小猪一起喝(从N小猪中选3头),一以类推到选择1瓶水所有小猪都喝,于是由二项式定理可得n个小猪喝一次水可以确定(1+1)^n瓶水中哪一瓶是毒药。将水编号,然后将编号转成二进制,每个小猪喝对应二进制位是1的水,这样n个小猪喝一次水就可以确定(1+1)^n瓶水中哪一瓶有毒。第二次:将对应进制为1的药水分给小猪喝,对应小猪死了,说明对应进制为1,否则不是。第一次、第二次小猪都没死,则说明对应进制为2。
2025-06-29 11:58:18
347
原创 算法题:最长递增子序列
的进阶版,用一个数组维护增长序列,那么这个增长序列数组就是有序的,就可以利用二分查找算法提升性能,另外题目的结果就是增长序列的长度,算法步骤:在遍历原数组的过程中,如果当前元素比增长序列数组的最后一个元素大就将当前元素加入增长序列数组,否责就在增长序列数组中就行二分查找,找到合适的位置,更新位置值为当前元素,这样做的目的是为了保证长度一样的情况下,保证递增序列的值最小,方便后续元素加入递增序列数组。---hard题解题思路。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。
2025-01-19 11:41:08
300
原创 算法题-最长连续序列
遍历数组的过程中,判断当前元素是不是某个连续区间的最小值(也可以是最大值),以最小值为例,就是判断数组中是否包含num[i]-1的值,不包含则当前元素是某个连续区间的最小值,然后通过一个内层循环求以当前元素为左边界(最小值)的连续区间长度。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最长数字连续序列是[1,2,3,4]。请你设计并实现时间复杂度为。给定一个未排序的整数数组。
2025-01-19 10:41:55
181
原创 算法题-非递减子序列
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。set中不包含该当前元素,可以继续选择当前元素,也可以跳过当前元素。,找出并返回所有该数组中不同的递增子序列,递增子序列中。set中包含该当前元素,继续选择当前元素。可以继续选择当前元素,也可以跳过当前元素。1、如果当前元素<上次元素,跳过当前选择。思路:在递归的过程中并不需要用set去重。1、如果当前元素<上次元素,跳过当前选择。2、如果当前元素>=上次元素。2、如果当前元素>=上次元素。
2025-01-11 22:44:17
280
原创 面试题-用栈实现队列
面试过程:面试时第一版代码没有想到一个用于push,一个用于pop,面试官一直追问还可以优化吗?才想到leetCode题解中的思路,写出题解代码后面试官问能否写到线程安全,线程安全后依然要性能最优-临界区粒度最细。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(2、线程安全后性能最优。1、能否写成线程安全。
2024-12-29 21:06:00
214
原创 只出现一次的数字 II
你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。请你找出并返回那个只出现了一次的元素。外,其余每个元素都恰出现。
2024-12-28 17:45:45
156
原创 mysql字段varchar大小设置不合理踩坑线上问题
1、字段大小设置需要跟业务/产品讨论清楚,了解线上业务真实的字段值大小情况,避免设置太小出现线上问题。
2024-09-03 11:00:49
266
原创 mysql关于redo log和binlog作用的一些问题
InonoDB无法恢复数据,因为mysql将数据写入脏页,通过checkpoint机制进行刷盘,因此如果没有redolog,mysql的server层不知道事物是否已经刷盘,如果已经刷盘再次重做可能会带来数据一致性问题,如果没有刷盘,没有重做则会丢失数据,也许你会说那记录一下哪个binlog已经刷盘即可,这个记录文件就是另一种形式的redolog。redo log:1、InonoDB产生,非由mysql server层产生;binlog:1、主要用于主从复制;2、由mysql server层产生。
2024-06-11 17:28:54
261
原创 mysql间隙锁的作用
事务2先提交,事务1后提交,此时主库有id=4,age=18的数据,但是从库拿到的binlog是先插入age=18 的数据,然后在执行delete where age=18的数据,也就会吧id=4,age=18 的数据一起删除掉,导致主从数据不一致。在并发的情况下,唯一索引插入不存在的数据,唯一性的控制也要通过间隙锁来控制,因为这个时候行锁并不存在。事务1:删除where age=18的数据,对应删除的记录主键id=1,2,3。事务2:插入age=18的数据,对应id=4,
2024-06-04 11:39:53
177
原创 面试题:数组值为1-n,各出现一次,先加入x(x也是1-n的范围),找出x
4,2,2,3,1]->[4,2,2,3,-1]->[4,-2,2,3,-1]->[4,-2,2,3,-1],遍历到第二个2的时候,2-1对应的索引位置的元素值已经是负数,说明2已经出现了重复。定义两个指针,一个每次向前两步,一个每次向前一步,如果数组里有重复的数字,这两个指针一定会相遇,相遇后,快的指针重置到数组起点,两个指针在同时按步数为1的方法前进,再次相遇的数字即为重复数字。2、判断元素值-1对应的索引位置值是否为负数,如果是负数则找到了重复元素X。以:[4,2,2,3,1]为例。
2024-06-01 12:12:40
258
原创 面试题:链表有环求入环第一个点
4、让长的链表先走多出来的节点,最后两个链表的指针同时走,每次走一个节点,每走一步判断节点是否相等,相等则说明是入环的第一个点。通过這个表达式我们知道,第二相遇时,慢指针走了X步,快指针会在圆环上绕性n-1圈,在加上z个节点,最后在入环第一个点再次相遇。2、B点相遇后,将B的next指针设置为null,整个链表转化为x-A-B的链表和B-C-A-B两个相交的链表。2*(x+y)=x+y+n*(y+z),这里n>=1,y+z代表圆环的节点数。1、慢指针每次走一个节点,快指针每次走两个节点,第一次在B点相遇。
2024-06-01 11:39:54
179
原创 高性能-forkjoinPool的一些疑问
正常理解:执行任务A的线程,在等待B任务的结果的时候,无法执行别的任务,同理执行任务B的线程需要等待C任务完成,也无法执行别的任务,这样一直依赖下去,会消掉完所有工作线程从而导致部分依赖任务没有线程执行,整个大任务被阻塞。這个问题的关键在于join方法的实现:join方法在等待的时候会去看自己依赖的任务是否完成,如果没有完成则从别的任务队列中窃取任务完成,而不是死死的等待任务依赖任务完成。2、如果config是非2的n次冥,就先config的所有二进制位通过|运算变成1,然后在加1得到一个2的n次冥的数。
2024-06-01 11:14:15
249
原创 JVM面试题
1、CMS和G1垃圾回收器选型2、本地缓存服务有几百兆的大对象适合那种垃圾回收器?3、本地缓存服务有几百兆的大对象一个region放不下对G1垃圾回收有啥影响?
2024-05-28 11:01:13
167
原创 Http和https面试题
服务端将自己的证书信息和证书校验和信息发送给客户端,校验和信息在服务端申请域名的时候,由CA机构校验生成,同时通过自己的私钥进行加密,另外客户端在生产的时候就有CA机构的公钥,客户端拿到服务端给的信息后,解密出校验和,然后通过证书上的算法生成校验和,跟服务端给的校验和做比较,一致则认为服务端有效。
2024-05-27 20:07:25
143
原创 Java线程池使用的一些问题
worker线程是懒加载的,当用户请求来的时候才判断是否需要创建worker线程,但是创建线程是一个耗时的过程,如果遇到突然流量,需要同时创建所有的核心线程,甚至是最大线程,这会导致CPU飙升,接口影响变慢,用户请求可能超时,可以在服务启动的时候调用如下方法启动所有的核心线程。主异步任务产生子异步任务,主异步任务提交子任务到线程池中,然后等子任务的结果,当主异步任务较多的时候,会占用所有的worker线程,然后子任务没有worker线程去执行,最后子任务越来越多,当队列满的时候执行拒绝策略。
2024-05-24 11:45:07
747
原创 mysql核心面试题
可以配置的参数&参数对应的数据安全级别1、锁是加在索引上的2、非聚簇索引提升查询性能3、只有一个聚簇索引可以减少存储,另外在维护数据一致性方面也有好处。
2024-05-24 10:52:10
545
原创 下单用事务消息还是普通消息
由于这些数据对实时性要求比较高,只依赖事务消息或者普通消息都难以确保实时性,因此还需要同步调用。1、缺点:一旦MQ宕机导致prepare消息无法发出,责会阻塞下单流程,给公司带来资损。采用普通消息+消息发送失败写入DB+定时任务补偿的方式保证消息的可靠投递。避免因为MQ宕机后阻塞下单的问题。1、优点:保证消息的可靠投递。
2024-05-21 18:51:12
214
原创 接口设计需要考虑哪些方面
15、调用第三方接口需要注意超时设置、是否异步、是否走本地缓存、重试机制、完全降级、批量&并行、QPS评估、延迟评估(特别是主从延迟)、状态码解析、响应和参数记录、异常处理。14、那些是核心流程那些是非核心流程,非核心流程是否可以异步,同时还不影响主流程。18、接口职责:底层接口考虑原子能力,外部controller考虑聚合能力。6、内部使用&还是外部使用,最好分开,因为内部调用可能不需要鉴权。19、接口各个方面监控到位:QPS、性能、错误率等。2、降级:非核心接口,可在适当时候降级。
2024-05-21 18:42:01
225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1