刷题
文章平均质量分 95
题
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HOT100(九)多维动态规划
维护一个二维数组f,f[i][j]表示从起点到(i,j)的路径数。已知初始化f[0][0]=1,即机器人在起点的路径是1;机器人到达第一列f[:][0]只能走下来,因此第一列的每个元素都为1;机器人到达第一行f[0][:]只能走下来,因此第一行的每个元素都为1。这是因为机器人到达一个点,只能从上方和左方走过来,因此。原创 2024-09-09 01:25:44 · 1388 阅读 · 0 评论 -
HOT100(八)动态规划
开辟一个长度为 n+1 的,f[i]表示走到第i个台阶的方案数。(在台阶底部,不需要移动也视为一种方法),(走到台阶1的方案只有一种,就是爬一步)。,因为走到第i个台阶,必然是从第i-1个台阶或者第i-2个台阶上爬上来的,因此走到第i个台阶的方案数等于走到第i-1个台阶的方案数与走到第i-2个台阶的方案数之和。最后返回f(n)就是爬到n级阶梯的方案总数。原创 2024-09-08 15:40:03 · 763 阅读 · 0 评论 -
HOT 100(七)栈、堆、贪心算法
使用来解决。主要思路是遍历数组,利用栈来存储。当遇到比栈顶索引所对应温度更高的温度时,就可以确定当前这一天的温度比之前那一天高。。求一个元素右边或者左边第一个比它大/小的元素可以用到单调栈。原创 2024-09-07 21:04:23 · 2758 阅读 · 0 评论 -
HOT 100(六)二分查找、栈
这种方式计算的mid更偏向于左侧。这是因为当left+right为偶数时,它会精确地取中间;而当它为奇数时,mid会向左侧靠拢。通常用这种方式来查找目标值的第一个位置。(偏右):通过在mid的基础上加 1,使得在偶数的情况下mid向右侧靠拢。这通常用于寻找目标值的最后一个位置,因为它倾向于偏向右侧的搜索区域。原创 2024-09-07 01:32:13 · 948 阅读 · 0 评论 -
HOT 100(五)
我们遍历二维网格中的每一个点,如果遇到一个值为1的点,则启动一次 DFS 搜索,将所有与之相连的陆地都标记为访问过。这意味着我们找到了一座岛屿。最后,原创 2024-09-06 00:11:03 · 743 阅读 · 0 评论 -
刷题记录-HOT 100(四)二叉树
处理逻辑:递归地访问左子树-处理中间节点-递归地访问右子树。时间复杂度和空间复杂度都是O(n)。原创 2024-09-04 23:24:50 · 1118 阅读 · 0 评论 -
刷题记录-HOT 100(三)
slowfastslowfastfastslowfastfastNonefast.nextNoneslowfastNone第一阶段,soft和fast在b点相遇,soft走过的距离是x+y,fast走过的距离是2(x+y)。fast比soft多走的距离x+y=r+y。可以得到x=r。第二阶段,找环起点a,soft重定向到头结点head,fast从相遇点b出发。soft走到a的距离为x,fast回到环起点经过的距离为r,x=r,所以两者会在a处相遇。原创 2024-09-04 00:42:18 · 1010 阅读 · 0 评论 -
刷题记录-HOT 100(二)
在遍历完所有区间后,最后一个区间还未被加入到结果列表中,因此需要将它加入到结果列表。原创 2024-09-02 16:00:25 · 1074 阅读 · 0 评论 -
刷题记录-HOT 100(一)
记录题解和思路。原创 2024-09-01 23:32:25 · 843 阅读 · 0 评论 -
算法基础课第一章-双指针+位运算+离散化+区间合并
连续的数据或较大范围的数据转换为离散的、有限的数据集。原创 2024-07-27 13:38:41 · 1009 阅读 · 0 评论 -
算法基础课第一章(中)高精度+前缀和+差分
假设A是一个一维数组,A[i]表明A中第i个元素。对于数组A,可以定义一个前缀和数组P,使得P[i]表示A中第一个到第i个元素之和。即:对于P数组第一个元素,由于没有元素可以累加,设P[0]=0。任意区间[l,r]的和可以在常数时间内被查询:区间和=P[r]-P[l-1]。其中构建过程为:初始化P[0]=0,而P[i]=P[i-1]+A[i]。①A是一个二维数组,A[i][j]代表第i行第j列元素,设前缀和数组P,有P[i][j]代表A中左上角(1,1)的元素到A中(i,j)的所有元素的和。原创 2024-07-20 15:56:41 · 997 阅读 · 0 评论 -
算法基础课第一章(上)快排,归并,二分
此时,可以确定的是至少有mid-i+1这么多的元素大于右边当前j指向的元素(因为左边部分是递增的,i~mid之间的元素都比第i个指向的元素大,那么肯定也是都大于右边当前j指向的元素的,个数可以由i-mid+1得到。因此当前比较可以得到的逆序对有【3 2】【5 2】【7 2】【8 2】,有mid-i+1=4-1+1=4个逆序对。(1)区别1:循环跳出约束改变,while r-l原创 2024-07-18 21:22:13 · 1057 阅读 · 0 评论 -
算法基础课-第二章复盘
对于插入操作,循环读入字符,如果当前结点p的子节点指针数组son中并没有指向当前字符的指针(即son[p][u]=0,其中u可以由当前字符ASCII码减去'a'的ASCII码得到),那么创建结点(idx+=1,son[p][u]=idx,通过idx来标识结点)。2、再逐个比较得到的每个数的最大异或值,其中最大的数即为输出:初始化res=0,p指向根结点(p=0)。从最高位开始计算,如果存在相应位置i上与该位不同的值(比如0和1),则res加上1左移i位(1原创 2024-07-17 21:30:04 · 962 阅读 · 0 评论
分享