- 博客(99)
- 收藏
- 关注
原创 CCF CSP 第34次(2024.06)(2_矩阵重塑(其二)_C++)(二维矩阵 -> 一维矩阵 -> 二维矩阵)
CCF CSP 第34次(2024.06)(2_矩阵重塑(其二)_C++时间限制: 1.0 秒空间限制: 512 MiB原题链接题目背景矩阵转置操作是将矩阵的行和列交换的过程,在转置过程中,原矩阵 A 的元素 aij 会移动到转置后的矩阵 AT的 aji 的位置。这意味着 A 的第 i 行第j列的元素在 AT中成为了第 j 行第 i 列的元素。
2025-04-02 21:37:35
436
原创 LeetCode 热题 100_打家劫舍(83_198_中等_C++)(动态规划)
LeetCode 热题 100_打家劫舍(83_198)题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
2025-04-01 22:40:29
1077
原创 LeetCode 热题 100_杨辉三角(82_118_简单_C++)(动态规划)
LeetCode 热题 100_杨辉三角(82_118)题目描述:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
2025-03-29 22:43:27
412
原创 CCF CSP 第34次(2024.06)(1_矩阵重塑(其一)_C++)
CCF CSP 第34次(2024.06)(1_矩阵重塑(其一)_C++)时间限制: 1.0 秒空间限制: 512 MiB题目背景:矩阵(二维)的重塑(reshape)操作是指改变矩阵的行数和列数,同时保持矩阵中元素的总数不变。题目描述:矩阵的重塑操作可以具体定义为以下步骤:设原矩阵为 𝑀M,其维度为 n×m,即有 n 行和 m 列。新矩阵为 M′,其维度为 p×q。重塑操作要满足 n×m=p×q,这保证了元素的总数不变。
2025-03-28 22:41:02
847
原创 LeetCode 热题 100_爬楼梯(81_70_简单_C++)(动态规划)
LeetCode 热题 100_爬楼梯(81_70_简单_C++)题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
2025-03-27 22:25:33
352
原创 CCF CSP 第33次(2024.03)(2_相似度计算_C++)(字符串中字母大小写转换+哈希集合)
CCF CSP 第33次(2024.03)(2_相似度计算_C++)时间限制: 1.0 秒空间限制: 512 MiB题目背景:两个集合的 Jaccard 相似度定义为:Sim(A,B)= ∣A∪B∣/∣A∩B∣即交集的大小除以并集的大小。当集合 𝐴 和 𝐵完全相同时,𝑆𝑖𝑚(𝐴,𝐵)=1取得最大值;当二者交集为空时,𝑆𝑖𝑚(𝐴,𝐵)=0取得最小值。
2025-03-26 23:10:36
1001
原创 LeetCode 热题 100_划分字母区间(80_763_中等_C++)(贪心算法(求并集))
LeetCode 热题 100_划分字母区间(80_763)题目描述:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。
2025-03-22 21:58:09
901
原创 CCF CSP 第33次(2024.03)(1_词频统计_C++)
CCF CSP 第33次(2024.03)(1_词频统计_C++)时间限制: 1.0 秒空间限制: 512 MiB题目描述:在学习了文本处理后,小 P 对英语书中的 n 篇文章进行了初步整理。 具体来说,小 P 将所有的英文单词都转化为了整数编号。假设这 n 篇文章中共出现了 m 个不同的单词,则把它们从 1 到 m 进行编号。 这样,每篇文章就简化为了一个整数序列,其中每个数都在 1 到 m 范围内。
2025-03-21 22:07:35
256
原创 LeetCode 热题 100_跳跃游戏 II(79_45_中等_C++)(贪心算法)
LeetCode 热题 100_跳跃游戏 II(79_45)题目描述:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: - 0 <= j <= nums[i] - i + j < n返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。
2025-03-20 22:29:43
1039
原创 CCF CSP 第32次(2023.12)(2_因子化简_C++)
CCF CSP 第32次(2023.12)(2_因子化简_C++)时间限制: 2.0 秒空间限制: 512 MiB题目背景:质数(又称“素数”)是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
2025-03-19 22:19:34
847
原创 LeetCode 热题 100_跳跃游戏(78_55_中等_C++)(贪心算法)
LeetCode 热题 100_跳跃游戏(78_55)题目描述:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。
2025-03-18 12:43:42
549
原创 CCF CSP 第32次(2023.12)(1_仓库规划_C++)
CCF CSP 第32次(2023.12)(1_仓库规划_C++)时间限制:1.0 秒空间限制: 512 MiB题目描述:西西艾弗岛上共有 n 个仓库,依次编号为 1 ⋯ n。每个仓库均有一个 m 维向量的位置编码,用来表示仓库间的物流运转关系。具体来说,每个仓库 i 均可能有一个上级仓库 j,满足:仓库 j 位置编码的每一维均大于仓库 i 位置编码的对应元素。
2025-03-17 22:54:52
815
原创 LeetCode 热题 100_买卖股票的最佳时机(77_121_简单_C++)(动态规划)
LeetCode 热题 100_买卖股票的最佳时机(77_121)题目描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
2025-03-16 22:34:12
384
原创 CCF CSP 第31次(2023.09)(2_坐标变换(其二)_C++)
CCF CSP 第31次(2023.09)(2_坐标变换(其二)_C++)题目背景:对于平面直角坐标系上的坐标 (x,y),小 P 定义了如下两种操作: 1. 拉伸 k 倍:横坐标 x 变为 kx,纵坐标 y 变为 ky; 2. 旋转 θ:将坐标 (x,y) 绕坐标原点 (0,0) 逆时针旋转 θ 弧度(0≤θ<2π)。易知旋转后的横坐标为xcosθ−ysinθ,纵坐标为 xsinθ+y
2025-03-15 22:49:10
862
原创 LeetCode 热题 100_前 K 个高频元素(75_347_中等_C++)(堆)(哈希表+排序;哈希表+优先队列(小根堆))
LeetCode 热题 100_前 K 个高频元素(73_347)题目描述:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。输入输出样例:示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]
2025-03-14 23:15:29
836
原创 CCF CSP 第31次(2023.09)(1_坐标变换_C++)(先输入再计算;边输入边计算)
CCF CSP 第31次(2023.09)(1_坐标变换_C++) 题目描述:对于平面直角坐标系上的坐标 (x,y),小 P 定义了一个包含 n 个操作的序列 T=(t1,t2,⋯,tn)。其中每个操作 ti(1≤i≤n)包含两个参数 dxi 和 dyi,表示将坐标 (x,y) 平移至 (x+dxi,y+dyi) 处。现给定 m 个初始坐标,试计算对每个坐标 (xj,yj)(1≤j≤m)依次进行 T 中 n 个操作后的最终坐标。
2025-03-13 22:42:36
938
原创 CCF CSP 第30次(2023.05)(2_矩阵运算_C++)(暴力破解)(矩阵相乘)
CCF CSP 第30次(2023.05)(2_矩阵运算_C++)题目背景:Softmax(Q×KT/√d)×V 是 Transformer 中注意力模块的核心算式,其中 Q、K 和 V 均是 n 行 d 列的矩阵,KT 表示矩阵 K 的转置,× 表示矩阵乘法。
2025-03-12 20:16:30
884
原创 LeetCode 热题 100_数组中的第K个最大元素(74_215_中等_C++)(堆)(暴力破解法(将整个数组进行排序);线性时间选择(快速排序:基础版);线性时间选择(快速排序:三路划分))
LeetCode 热题 100_数组中的第K个最大元素(74_215)题目描述:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。
2025-03-11 22:52:16
440
原创 LeetCode 热题 100_每日温度(72_739_中等_C++)(栈)(暴力破解;栈(从左到右);栈(从右到左))
LeetCode 热题 100_每日温度(72_739) 题目描述:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。
2025-03-10 19:39:33
1077
原创 LeetCode 热题 100_字符串解码(71_394_中等_C++)(栈)
LeetCode 热题 100_字符串解码(71_394)题目描述:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
2025-03-08 22:32:03
948
原创 LeetCode 热题 100_最小栈(70_155_中等_C++)(栈)(辅助栈)(栈中的push和emplace对比)
LeetCode 热题 100_最小栈(70_155)题目描述:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。
2025-03-03 19:24:54
629
原创 LeetCode 热题 100_寻找两个正序数组的中位数(68_4_困难_C++)(二分查找)(先合并再挑选中位数;划分数组(二分查找))
LeetCode 热题 100_寻找两个正序数组的中位数(68_4) 题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。
2025-03-01 17:35:10
1042
原创 LeetCode 热题 100_有效的括号(69_20_简单_C++)(栈;栈+哈希表(建立左右括号的对应关系))
LeetCode 热题 100_有效的括号(69_20)题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。3、每个右括号都有一个对应的相同类型的左括号。
2025-02-28 21:57:35
681
原创 CCF CSP 第30次(2023.05)(1_重复局面_C++)(unordered_map)
CCF CSP 第30次(2023.05)(1_重复局面_C++)题目背景:国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。题目描述:国际象棋每一个局面可以用大小为 8×8 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 k、q、r、b、n、p 表示,其中大写字母对应白方、小写字母对应黑方。棋盘上无棋子处用字符 * 表示。两个字符数组的每一位均相同则说明对应同一局面。
2025-02-27 21:52:51
657
原创 CCF CSP (2020.06_1_线性分类器_C++)(暴力破解)
【题目描述】 考虑一个简单的二分类问题——将二维平面上的点分为A和B两类。 训练数据包含 n个点,其中第i个点(1 ≤i≤ n)可以表示为一个三元组(xi,yi,typei),即该点的横坐标、纵坐标和类别。
2025-02-26 21:42:36
304
原创 LeetCode 热题 100_寻找旋转排序数组中的最小值(67_153_中等_C++)(二分查找)
LeetCode 热题 100_寻找旋转排序数组(67_153)题目描述:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1],
2025-02-25 22:46:19
730
原创 LeetCode 热题 100_搜索旋转排序数组(66_33_中等_C++)(二分查找)
LeetCode 热题 100_搜索旋转排序数组(66_33)题目描述:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6
2025-02-24 21:48:51
426
原创 LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34)题目描述:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
2025-02-22 22:17:37
991
原创 LeetCode 热题 100_搜索二维矩阵(64_74_中等_C++)(二分查找)(暴力破解法;Z字形查找;一次二分查找)
LeetCode 热题 100_搜索二维矩阵(64_74)题目描述:给你一个满足下述两条属性的 m x n 整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
2025-02-21 22:58:22
1029
原创 LeetCode 热题 100_搜索插入位置(63_35_简单_C++)(二分查找)(”>>“ 与 “/” 对比)
LeetCode 热题 100_搜索插入位置(63_35)题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。
2025-02-20 19:23:09
327
原创 LeetCode 热题 100_N 皇后 (62_51_困难_C++)(递归(回溯))
LeetCode 热题 100_N 皇后(62_51)题目描述:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。
2025-02-19 21:04:05
592
原创 LeetCode 热题 100_分割回文串(61_131_中等_C++)(递归(回溯))(回溯问题使用类成员变量还是函数传参)
LeetCode 热题 100_分割回文串(61_131)题目描述:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
2025-02-18 22:06:27
935
原创 LeetCode 热题 100_单词搜索(60_79_中等_C++)(深度优先搜索(回溯))(初始化二维vector的大小)
LeetCode 热题 100_单词搜索(60_79)题目描述:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
2025-02-17 18:27:52
880
原创 LeetCode 热题 100_括号生成(59_22_中等_C++)(递归(回溯))
LeetCode 热题 100_括号生成(59_22) 题目描述:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
2025-02-15 20:38:58
492
原创 LeetCode 热题 100_组合总和(58_39_中等_C++)(递归(回溯))
LeetCode 热题 100_组合总和(58_39)题目描述:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 对于给定的输入,保证和为 target 的不同组合数少于 150 个。
2025-02-14 21:06:26
1263
原创 LeetCode 热题 100_电话号码的字母组合 (57_17_中等_C++)(string(path.begin(),path.end()))
LeetCode 热题 100_电话号码的字母组合(57_17)题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
2025-01-22 22:56:36
818
原创 LeetCode 热题 100_全排列(55_46_中等_C++)(递归(回溯))
LeetCode 热题 100_两数之和(55_46) 题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。输入输出样例:示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
2025-01-21 22:56:32
664
原创 LeetCode 热题 100_实现 Trie (前缀树)(54_208_中等_C++)(图;前缀树;字典树)
LeetCode 热题 100_实现 Trie (前缀树)(54_208) 题目描述:Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。
2025-01-20 22:51:42
753
原创 LeetCode 热题 100_子集(56_78_中等_C++)(回溯)(ans.clear())
LeetCode热题100_子集(56_78)题目描述:给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。
2025-01-18 22:55:19
826
原创 LeetCode 热题 100_课程表(53_207_中等_C++)(图,拓扑排序)
LeetCode 热题 100_课程表(53_207)题目描述:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。
2025-01-16 22:36:34
814
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人