自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【力扣Hot 100】堆

给定整数数组nums和整数k,请返回数组中第 k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。非常经典的堆问题,在AcWing里学过类似的。直接套用就可以了。int。

2025-02-21 15:29:29 595

原创 【力扣Hot 100】贪心算法

给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。实际上是求最大值和最小值的差,并且要求最小值在最大值左边。所以可以用一个数来存当前的左边的最小值mi,然后枚举每一个数,如果比最小值小就更新最小值,并更新ans = max(ans, prices[i] - mi)

2025-02-21 15:28:45 575

原创 【力扣Hot 100】栈2

所以可以建两个栈,一个存左边第一个比自己小的数,一个存右边第一个比自己小的数。个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。对于每一个柱状图,我们要求它的高度向左最远能到哪里,向右最远能到哪里。如果一个数没出栈,说明它的右边没有比它小的数,它的右边界是n。当一个数出栈时,它是第一次遇到比它小的数,也就是它的右边界。也就是找左边第一个比它小的数,以及右边第一个比它小的数。找一系列数中第一个比自己小/大的数→单调栈问题。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2025-02-20 17:09:42 220

原创 【力扣Hot 100】栈

给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。**输入:**s = “()”**输出:**true**输入:**s = “()[]{}”**输出:**true**输入:**s = “(]”**输出:**false**输入:**s = “([])”**输出:**true'()[]{}'

2025-02-19 14:21:32 589

原创 【力扣Hot 100】二分查找

给你一个按照非递减顺序排列的整数数组。

2025-02-18 10:39:15 1091

原创 【力扣Hot 100】回溯2

数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且括号组合。

2025-02-18 10:37:42 504

原创 【力扣Hot 100】回溯1

给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以返回答案。

2025-02-17 17:00:45 457

原创 【力扣Hot 100】链表4

给你一个链表,删除链表的倒数第n**个结点,并且返回链表的头结点。!**进阶:**你能尝试使用一趟扫描实现吗?一个快指针,一个慢指针,快指针比慢指针提前 N 步,两个都每次走一格,当快指针指向 nullptr 的时候,慢指针刚好指向要删除的结点。为了更好的删除要删除的结点,慢指针从 head 前面一个指针开始。

2025-02-17 16:59:48 374

原创 【力扣Hot 100】链表3

给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。!!![0, 104]1**进阶:**你是否可以使用O(1)空间解决此题?

2025-01-26 17:08:06 495

原创 【力扣Hot 100】链表2

给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。![1, 105]**进阶:**你能否用O(n)时间复杂度和O(1)空间复杂度解决此题?思想是:把链表后半部分反转,再逐个比较前后链表是否相等。

2025-01-26 17:07:23 486

原创 【力扣Hot 100】链表1

的输入如下(你设计的程序。

2025-01-25 14:52:30 754

原创 【力扣Hot 100】矩阵2

旋转图像:观察旋转前后矩阵,发现点 i, j的变化规律,即每4个点会一同交换位置。遍历起始点。搜索二维矩阵:按行二分法。

2025-01-25 14:51:48 1475

原创 【力扣Hot 100】矩阵1

矩阵置零:1. 开两个数组判断该行/该列是否有0;2. 用第0行/第0列分别判断该列/该行是否有0螺旋矩阵:记录方向,一直按某方向前进,遇到障碍方向就变一下。

2025-01-24 21:16:56 667

原创 【力扣Hot 100】普通数组2

给定一个整数数组nums,将数组中的元素向右轮转k**个位置,其中k**是非负数。使用反转数组的方法。看图就能理解了。反转数组可以定义两个指针bg, ed,一个指向数组开始,一个指向数组末尾,交换它们直到重合或相交。

2025-01-24 21:15:46 424

原创 【力扣Hot 100】普通数组1

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。动态规划:用g[i]表示:以 i 结尾的连续最长子序列的和那么 g[i] = max(g[i - 1] + nums[i], nums[i])意思是:以 i 结尾的连续最长子序列的和,等于,以i - 1结尾的连续最长子序列的和 加上 第i个数,和,第i个数,之间的最大值。注意,因为数组nums是从0开始的,所以用 g[i] 表示:以 i - 1结尾的连续最长子序列的和。

2025-01-16 18:17:29 407

原创 【力扣Hot 100】子串

即,要求以i结尾的区间和为K的子串的个数,我们可以转化为求前缀和为pre[i] - K的个数。,请你统计并返回 *该数组中和为。子数组是数组中元素的连续非空序列。

2025-01-16 18:16:50 245

原创 【力扣Hot100】滑动窗口

当 j 进入窗口时,判断区间 i, j 之间,是否有 s[j] 存在,如果有,那么 i 应该 ++,直到区间 i , j 之间没有s[j]存在。这样就能确保i, j 之间的字符是不重复的。用长度为26的vector来存储字符串中的字母个数,如果它们是异位词,那么vector应该是相等的。维护i, j 中间的区间是要比较的单词,i, j 区间大小是固定的,因此可以用一个变量来表示。两个指针 i, j,均从前往后遍历,维护 i, j 之间的字符是不重复的。的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

2025-01-15 14:31:15 345

原创 【力扣Hot100】双指针

全部来自力扣hot 100移动零:两个指针一前一后,一起从前往后遍历盛水最多的容器:两个指针一个从前往后,一个从后往前三数之和:两个指针一个从前往后,一个从后往前。双指针问题思考步骤要从简单的双重循环开始优化,找规律,看到了某一步骤是不是就能省略后面的步骤。可以从:两个一起从前往后,一个从前往后、一个从后往前,两种情况来考虑是否可以优化。当然我是想不出来的>.

2025-01-15 10:14:14 1025

原创 【力扣Hot100】哈希表

来自leetcode Hot100

2025-01-09 20:28:55 492

原创 中九无科研无竞赛保研经验帖——上交软院、中科大计算机、复旦工程硕、南大工程硕、浙大软件

菜狗的保研经验帖

2024-10-01 16:55:56 1369 4

原创 动态规划——背包问题

本文的题目以及解题思路均来自AcWing算法提高课。部分题目在AcWing中收费,收费的题目在或者中也能找到。题目大多数是复制粘贴的,副标题可能没有对齐。

2024-08-16 13:48:55 749 1

原创 算法练习——高精度、前缀和

AcWing算法基础课第一章的练习。

2024-08-15 14:38:11 1051

原创 动态规划——最长上升子序列模型

最长上升子序列模型是动态规划问题的一个经典模型。最长上升子序列模型有两种解法。第一种解法时间复杂度为O(N2)。它用一个数组f[N]存储从第1个位置开始,到第i个位置的最长上升子序列的长度。状态转移方程为:f[i] = max(f[i], f[j] + 1)。其中a[i] > a[j], 并且j取值为1 ~ i - 1。第二种解法时间复杂度为O(nlogn)。它用一个数组g[N]存储长度为i的子序列的最后一个元素的值。如果是求上升子序列,那么数组g应该也是上升的;如果是求下降子序列,那么数组g是下降的。

2024-08-15 14:32:03 1093

原创 AcWing算法提高课笔记——数字三角形

本文给出了几道数字三角形模型的题解。数字三角形模型通常给定一个矩阵,从矩阵的左上角走到右下角,每次只能向右走或者向下走,求最大值或者最小值。这种问题可以用f[i, j]来表示从[1, 1]走到[i, j]处的Max\Min,有状态转移方程:如果是走两遍,就用f[k, i1, i2]表示从[1, 1]走到[i1, j1]和[i2, j2]处的Max\Min,其中i1 + j1 = k = i2 + j2。状态转移方程为:本题所有题目都来自AcWing算法提高课。

2024-08-14 17:19:03 1081

原创 算法练习——函数、递归和递推

在此记录一些有关函数、递归和递推的问题。所有题目均来自洛谷的题单(实际上都没有用递推做)

2024-06-29 22:45:28 1541

原创 算法练习——数素数

令Pi表示第i(i从1开始计数)个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入在一行中给出M和N,其间以空格分隔。

2024-06-28 16:34:03 484

原创 AcWing算法基础课笔记——记忆化搜索:滑雪

题目描述:给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。在给定矩阵中,一条可行的滑行轨迹为24-17-2-1。在给定矩阵中,最长的滑行轨迹为25-24-23-…-3-2-1,沿途共经过25个区域。

2024-06-28 10:40:29 339

原创 AcWing算法基础课笔记——树形DP:没有上司的舞会

Ural大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。第一行一个整数N。接下来N行,第 i 行表示 i 号职员的快乐指数Hi。接下来N-1行,每行输入一对整数L, K,表示K是L的直接上司。输出最大的快乐指数。

2024-06-27 23:26:30 913

原创 AcWing算法基础课笔记——最短Hamilton路径

> k - > j的路径,k是f[i, j]的倒数第二个结点,那么f[i, j] = f[i - {j}, k] + a[k, j]。其中i - {j}表示在i中删去j这个结点,a[k, j]表示从k走到j的代价。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]>=a[x,z]。接下来 n 行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。表示从0走到j,走过的所有点是i的所有路径的最小值。

2024-06-27 22:40:37 689

原创 AcWing算法基础课笔记——状态压缩DP:蒙德里安的梦想

状态是整数,但把它看成二进制数,二进制中每一位是0或1表示不同的情况。

2024-06-25 20:45:11 429

原创 AcWing算法基础课笔记——线性DP

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第i行表示数字三角形第i层包含的整数。输出一个整数,表示最大的路径数字和。1≤n≤500-10000 ≤ 三 角 形 中 的 整 数 ≤ 1000030。

2024-06-25 10:57:23 526

原创 AcWing算法基础课笔记——动态规划之背包问题

每件物品的体积是 𝑣_{𝑖𝑗},价值是 𝑤_{𝑖𝑗},其中 𝑖 是组号,𝑗 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。第一行有两个整数𝑁,𝑉,用空格隔开,分别表示物品组数和背包容量。(上面是01背包问题的方程,下面是完全背包问题的方程)每组物品有若干个,同一组内的物品最多只能选一个。有 𝑁 组物品和一个容量是 𝑉 的背包。输出一个整数,表示最大价值。

2024-06-24 14:19:40 615

原创 AcWing算法基础课笔记——卡特兰数与容斥原理

C2nn−C2nn−1=C2nnn+1C_{2n}^{n} - C_{2n}^{n - 1} = \frac{C_{2n}^n}{n + 1}C2nn​−C2nn−1​=n+1C2nn​​给定n个0和n个1,它们将按照某种顺序排成长度为2n的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中0的个数都不少于1的个数的序列有多少个。输出的答案对109+7取模。输出格式共一行,包含整数n。输出格式共一行,包含一个整数,表示答案。数据范围1≤n≤105代码容斥原理题目给定一个整数 𝑛

2024-06-24 14:10:54 566

原创 AcWing算法基础课笔记——求组合数4

求组合数Ⅳ用来解决求Cab​的问题(没有模运算)解决办法:分解质因数,实现高精度乘法。Cab​b!a−ba!​其中a!可以用pa!

2024-06-23 13:30:19 681

原创 AcWing算法基础课笔记——求组合数3

求组合数Ⅲ20万组数据,1≤b≤a≤10181≤p≤105,使用卢卡斯定理。Cab​≡Camodpbmodp​Capbp​modp时间复杂度为Ologp​N⋅plogp。

2024-06-23 13:27:08 1102

原创 AcWing算法基础课笔记——求组合数2

给定n组询问,每组询问给定两个整数a,b,请你输出C(a,b) mod (10^9+7)的值。接下来n行,每行包含一组a和b。共n行,每行输出一个询问的解。

2024-06-23 10:52:32 1027

原创 AcWing算法基础课笔记——求组合数1

给定n组询问,每组询问给定两个整数a,b请你输出C(a,b) mod (10^9+7)的值。接下来n行,每行包含一组a和b。共n行,每行输出一个询问的解。,用递推,时间复杂度。

2024-06-22 21:59:53 737

原创 AcWing算法基础课笔记——高斯消元

详见:https://www.acwing.com/problem/content/description/885/,但是考虑到本题作为一道模板题,考察点并不在于此,在此处卡住大多同学的代码没有太大意义,故增加 SPJ,对输出。如果给定线性方程组存在唯一解,则输出共 n 行,其中第 i 行输出第 i 个未知数的解,结果。接下来 n 行,每行包含 n+1 个实数,表示一个方程的 n 个系数以及等号右侧的常数。在数学中,一般没有正零或负零的概念,所以严格来说应当输出。输入一个包含 n 个方程 n 个未知数的。

2024-06-22 20:04:30 1346

原创 AcWing算法基础课笔记——欧拉函数、快速幂、扩展欧几里得算法

给定 𝑛 对正整数𝑎𝑖,𝑏𝑖,对于每对数,求出一组𝑥𝑖,𝑦𝑖,使其满足𝑎𝑖×𝑥𝑖+𝑏𝑖×𝑦𝑖=𝑔𝑐𝑑(𝑎𝑖,𝑏𝑖)。给定 n 组 ai,bi,pi,对于每组数据,求出 aibi mod pi 的值。输出共 𝑛 行,对于每组𝑎𝑖,𝑏𝑖,求出一组满足条件的𝑥𝑖,𝑦𝑖,每组结果占一行。对于每组数据,输出一个结果,表示 aibi mod pi 的值。欧拉函数:小于等于 n 的正整数中与 n 互质 的数的数目。本题答案不唯一,输出任意满足条件的𝑥𝑖,𝑦𝑖 均可。接下来𝑛 行,每行包含两个整数𝑎𝑖,𝑏𝑖。

2024-06-13 22:16:04 825

原创 AcWing算法基础课笔记——约数

给定 𝑛 个正整数 𝑎_𝑖,请你输出这些数的乘积的约数个数,答案对 10^9+7 取模。给定 n 个正整数 ai,对于每个整数 ai,请你按照从小到大的顺序输出它的所有约数。输出共 n 行,其中第 i 行输出第 i 个整数 ai 的所有约数。输出一个整数,表示所给正整数的乘积的约数个数,答案需对。输出共n行,每行输出一个整数对的最大公约数。接下来 𝑛 行,每行包含一个整数 𝑎_𝑖。接下来n行,每行包含一个整数对ai,bi。接下来 n 行,每行包含一个整数 ai。int范围内约数个数最多大概1500。

2024-06-13 18:22:35 791

空空如也

空空如也

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

TA关注的人

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