刷题记录
算法题目刷题记录
Do1phln
医学(病理学)人工智能PhD,曾经是CTFer
展开
-
LeetCode 1678. 设计Goal解析器
根据题目描述模拟即可。原创 2022-11-06 21:15:44 · 183 阅读 · 0 评论 -
LeetCode 1620.网络信号最好的坐标
模拟题根据题目要求,如果有多个网络信号最好的坐标,则返回网络信号最好的非负坐标,此时 cx>=0且cy>=0。因此结果坐标满足大于0小于x/yMax的条件,所以只需在此范围内遍历每一个可能的坐标,计算其信号强度之和,即可找到符合信号最好的坐标。原创 2022-11-02 15:15:48 · 119 阅读 · 0 评论 -
LeetCode 1662.检查两个字符串数组是否相等
模拟题,没思路。原创 2022-11-01 10:28:39 · 78 阅读 · 0 评论 -
LeetCode 481.神奇字符串
本题目应该说难在读题,根据题目描述的意思,s作为一个神奇字符串,他的每一组数都是根据前面的数去判定的,以开头的122之后为例,122之的末尾为2,而s的规则是1和2交替出现,所以后面应当跟着"1",而这一组"1"的数量则由其前面的"2"来决定,所以这一组有两个"1",同理,在这后面跟着的就是一个"2",剩下要做的,就是把这个过程模拟出来求得结果即可。原创 2022-10-31 21:19:10 · 160 阅读 · 0 评论 -
LeetCode 784.字母大小写全排列
dfs所有情况一把梭,当遇到当前字符是字母时,分别以大小写分别进行下一步dfs,然后将每一次dfs末端的结果保存,最后得到的就是全排列组合。原创 2022-10-30 23:05:52 · 174 阅读 · 0 评论 -
LeetCode 1773.统计匹配检索规则的物品数量
简单模拟题,需要做的就是按照规则用map把物品名称映射一下,然后再遍历数组中的每个元素,如果符合要求就给结果+1即可,最后输出其中的内容。原创 2022-10-29 15:25:56 · 160 阅读 · 0 评论 -
LeetCode 907.子数组的最小值之和
本题由于每一项都需要遍历到,所以我们要计算所有可能的排列组合情况,所以这道题我们应该从每个元素分别出发,构建单调栈,找到每个元素左边和右边第一个比他小的元素,在这个区间范围内,我们可以断定任何一个子区间得到的最小值都是当前选定这个元素,所以最终的结果就可以很快的由单调栈记录内容的区间长度乘以当前这个元素值就可以得到当前子区间内的所有子数组相加之和,最终将这些结果分别相加即可得到答案。原创 2022-10-28 19:52:43 · 408 阅读 · 0 评论 -
LeetCode 1822.数组元素积的符号
【代码】LeetCode 1822.数组元素积的符号。原创 2022-10-27 13:41:11 · 171 阅读 · 0 评论 -
LeetCode 862.和至少为k的最短子数组
如果我们找到当前的s[i]满足条件,则说明之后选取的s[i]不管是多少,均没有当前s[i]距离s[j]近,所以在此以后的值均可以丢弃,同理,s[j]之前的值也是如此,因此经过这两轮优化,我们就可以得到一个基本的单调队列。本题前缀和队列并不单调,所以应该算变种单调队列,在计算出单调队列以后还要进行进一步优化,即在如下条件。原创 2022-10-26 15:38:39 · 112 阅读 · 0 评论 -
LeetCode 934.最短的桥
题目限制了岛的数量肯定为2,所以我们只需要找到两个岛即可,首先通过遍历每一个坐标找到一个岛的点(值为1),接着以这个点开始DFS,找到该岛上所有的点,并将值设为-1,然后以这些点为基础集合,再进行BFS,当找到第一个值为1的点时,BFS的层数就是需要翻转的数目。原创 2022-10-25 12:22:45 · 185 阅读 · 0 评论 -
LeetCode 915.分割数组
模拟题,两遍遍历,因为要保证左侧区间尽可能小,所以就要找到最左面的适合的点,所以第一遍先从最右边开始记录前缀最小的数,之后再从左往右遍历一遍记录当前最大的前缀,同时将当前最大前缀与下一位的最小前缀比较,如果小于下一位的最小前缀则直接输出即可。原创 2022-10-24 18:37:58 · 503 阅读 · 0 评论 -
【算法模板】快速排序模板
快排模板原创 2022-08-30 11:43:01 · 122 阅读 · 0 评论 -
LeetCode 388.文件的最长绝对路径
题目链接思路针对文件路径的特征,一个文件中一定包含.分隔符,以此为依据可以判定当前字符串是否是一个文件,文件系统是一个树形结构的角度来看的话,题中给定的字符串实际上是以一个树形结构前序遍历的序列,连续的\t表示出了当前的深度,而相邻的节点之间以\n进行分割。假设当前的路径为x/y/z,其中x,y,zx,y,zx,y,z的文件名长度为分别为lx,ly,lzl_x, l_y, l_zlx,ly,lz则路径&x, x/y, x/y/z&的长度分别为lx,lx+ly+1,lx+ly+lz原创 2022-05-19 10:37:33 · 111 阅读 · 0 评论 -
【每日一题】AcWing 1904. 奶牛慢跑
题目奶牛们又出去锻炼蹄子去了!有 N头奶牛在无限长的单行道上慢跑。每头奶牛在跑道上开始奔跑的位置互不相同,一些奶牛的奔跑速度可能相同,也可能不同。由于跑道是单行道,十分狭窄,奶牛们无法相互超越。当一头速度很快的牛追上另一头牛时,她必须减速至与另一头牛速度相同以免发生碰撞,并成为同一跑步小组的一员。此时,两头牛可以视为在同一点上。最终,再也没有奶牛会撞到(追上)其他奶牛了。约翰想知道在这种情况下,会剩下多少个跑步小组。输入格式第一行包含整数 N接下来 N行,每行包含一头奶牛的初始位置和跑步速度。所有原创 2022-01-21 22:01:34 · 621 阅读 · 0 评论 -
【每日一题】LeetCode 89.格雷编码
题目n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一个 整数的二进制表示 恰好一位不同给你一个整数 n ,返回任一有效的 n 位格雷码序列 。示例输入:n = 2输出:[0,1,3,2]解释:[0,1,3,2] 的二进制表示是 [00,01,11,10] 。00 和 01 有一位不同原创 2022-01-08 21:49:44 · 3442 阅读 · 0 评论 -
【每日一题】LeetCode 1614. 括号的最大嵌套深度
题目如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):字符串是一个空字符串 “”,或者是一个不为 “(” 或 “)” 的单字符。字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。字符串可以写为 (A),其中 A 是一个 有效括号字符串 。类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):depth("") = 0depth© = 0,其中 C 是单个字符原创 2022-01-07 23:18:04 · 166 阅读 · 0 评论 -
【每日一题】LeetCode 1576.替换所有的问号
题目给你一个仅包含小写英文字母和 ‘?’ 字符的字符串 s,请你将所有的 ‘?’ 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。注意:你 不能 修改非 ‘?’ 字符。题目测试用例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。示例输入:s = “?zs”输出:“azs”解释:该示例共有 25 种解决方案,从 “azs” 到 “yzs”原创 2022-01-05 17:04:51 · 170 阅读 · 0 评论 -
【每日一题】LeetCode 913.猫和老鼠(hard题)
题目两位玩家分别扮演猫和老鼠,在一张 无向 图上进行游戏,两人轮流行动。图的形式是:graph[a] 是一个列表,由满足 ab 是图中的一条边的所有节点 b 组成。老鼠从节点 1 开始,第一个出发;猫从节点 2 开始,第二个出发。在节点 0 处有一个洞。在每个玩家的行动中,他们 必须 沿着图中与所在当前位置连通的一条边移动。例如,如果老鼠在节点 1 ,那么它必须移动到 graph[1] 中的任一节点。此外,猫无法移动到洞中(节点 0)。然后,游戏在出现以下三种情形之一时结束:如果猫和老鼠出现在原创 2022-01-04 22:58:05 · 241 阅读 · 0 评论 -
【每日一题】LeetCode 1185.一周中的第几天
题目给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。输入为三个整数:day、month 和 year,分别表示日、月、年。您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”}。示例输入:day = 31, month = 8, year = 2019输出:“Saturday”代码class Solution: def dayOfT原创 2022-01-03 16:54:57 · 136 阅读 · 0 评论 -
【每日一题】LeetCode 390. 消除游戏
题目列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序。请你对 arr 应用下述算法:从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。给你整数 n ,返回 arr 最后剩下的数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/eliminat原创 2022-01-02 23:23:21 · 5915 阅读 · 0 评论 -
【每日一题】LeetCode 2022.将一维数组转变成二维数组
题目给你一个下标从 0 开始的一维整数数组 original 和两个整数 m 和 n 。你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,下标从 n 到 2 * n - 1 (都 包含 )的元素构成二维数组的第二行,依此类推。请你根据上述过程返回一个 m x n 的二维数组。如果无法构成这样的二维数组,请你返回一个空的二维数组。示例输入:original = [1,2,3,原创 2022-01-01 21:17:06 · 166 阅读 · 0 评论 -
【每日一题】LeetCode 507.完美数
题目对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true,否则返回 false样例输入:num = 28输出:true解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7, 和 14 是 28 的所有正因子。代码class Solution: def checkPerfectNumber(self, num: int) -> bool: if num原创 2021-12-31 16:30:27 · 308 阅读 · 0 评论 -
【每日一题】LeetCode 383. 赎金信
题目为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。代码class Solution {public: bool canConstruct(string a, string b原创 2021-12-04 18:08:48 · 159 阅读 · 0 评论 -
【每日一题】LeetCode 786. 第K个最小的素数分数(待补全题解思路)
题目给你一个按递增顺序排序的数组 arr 和一个整数 k 。数组 arr 由 1 和若干 素数 组成,且其中所有整数互不相同。对于每对满足 0 < i < j < arr.length 的 i 和 j ,可以得到分数 arr[i] / arr[j] 。那么第 k 个最小的分数是多少呢? 以长度为 2 的整数数组返回你的答案, 这里 answer[0] == arr[i] 且 answer[1] == arr[j] 。输入:arr = [1,2,3,5], k = 3输出:[原创 2021-11-29 09:06:19 · 392 阅读 · 2 评论 -
【每日一题】LeetCode 438.找到字符串中所有字母异位词
题目给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。输入: s = “cbaebabacd”, p = “abc”输出: [0,6]解释:起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。代码class Solution {public: vector<i原创 2021-11-28 17:00:02 · 143 阅读 · 0 评论 -
【每日一题】LeetCode 458. 可怜的小猪(思路清奇)
题目有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有 minutesToTest 分钟时间来确定哪桶液体是有毒的。喂猪的规则如下:选择若干活猪进行喂养可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。过了 minutesToDie 分钟后,所原创 2021-11-25 17:25:03 · 179 阅读 · 0 评论 -
【每日一题】LeetCode 423.从英文中重建数字
题目给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。输入:s = “owoztneoer”输出:“012”输入:s = “fviefuro”输出:“45”代码class Solution {public: string originalDigits(string s) { string name[] = { "zero", "one", "two", "three", "four",原创 2021-11-24 17:59:15 · 273 阅读 · 0 评论 -
【每日一题】LeetCode 859. 亲密字符串
题目描述给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。代码class Solution {public: bool buddyStrings(string a, string原创 2021-11-23 10:58:55 · 499 阅读 · 0 评论 -
【每日一题】LeetCode 559. N叉树的最大深度
题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。例如:输入:root = [1,null,3,2,4,null,5,6]输出:3代码/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {}原创 2021-11-21 20:56:55 · 339 阅读 · 0 评论 -
ACM-CodeForces-#685(Div.2)
A. Subtract or Divide#include<iostream> using namespace std; int main(){ int T,n; cin>>T; while(T--) { cin>>n; if(n<=3) n--; else n=2+(n&1); cout<<n<<endl; } return 0;}B. Non-Substring Subsequence原创 2021-11-05 14:44:46 · 128 阅读 · 0 评论 -
CodeForces-Round#684-Div.2
A. Buy the String#include<iostream>#include<cstdio>using namespace std;char c[1005];int main(){ int T; int sum_1=0,sum_0=0,ans; cin>>T; while(T--) { int n,c0,c1,h; cin>>n>>c0>>原创 2021-11-05 14:43:54 · 113 阅读 · 0 评论 -
蓝桥杯十一届JavaA组-C++解题
随便乱写,目前正确性未知C.本质上升序列#include<bits/stdc++.h>using namespace std;bool access[4][4];int dfs(int idx, int x, int y){ if(x<0 || y<0 || x>=4 || y>=4) return 0; if(access[y][x]) return 0; if(idx>=15) return 1; int count=0; acce原创 2021-11-05 14:43:00 · 137 阅读 · 0 评论 -
ACM-NEFU15届校赛-大二组题解
A.小林找工作#include<bits/stdc++.h>using namespace std;const int MAXN=1e5+10;int p[MAXN];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { scanf("%d", &p[i]); } sort(p+1,p+n+1); for(int i=0;i<m;i++) { int t原创 2021-11-05 14:41:44 · 183 阅读 · 0 评论 -
ACM-NEFU15届校赛-大一组题解
A. 三角形面积#include <bits/stdc++.h>using namespace std;int main(){ double a,b,c; double ans,p,tmp; cin>>a>>b>>c; p=(a+b+c)*0.5; tmp=p*(p-a)*(p-b)*(p-c); ans=sqrt(tmp); printf("%.1lf", ans); return原创 2021-11-05 14:41:07 · 185 阅读 · 0 评论 -
NEFUOJ208-宫锁珠帘
题目Description新年期间湖南卫视又上映了不少宫闱大戏,晴川穿走了,又来了个宫锁珠帘的袁珊珊,袁珊珊不够美,没锁住观众的心,特别是咱们整ACM的,对这些宫闱大戏当然是不屑一顾了,可这新亮剑的李云龙咱们还是有得一看的,最近听说A地又驻扎了一个骑兵营,李云龙心里就乐了,心想老子吃了骑兵营这么多亏,这下终于有机会自个儿也能整个啥骑兵营威风威风了,于是拿出地图决定抄最短的路立马拿下这个骑兵营。Input每组数据第一行包含两个正整数N和M(0<N,M<100),分别代表李云龙现有地图上显原创 2021-11-05 14:32:15 · 119 阅读 · 0 评论 -
【LeetCode】11月每日一题刷题记录
575. 分糖果class Solution {public: int distributeCandies(vector<int>& candyType) { unordered_set<int> S; for(auto c: candyType) S.insert(c); return min(candyType.size()/2, S.size()); }};原创 2021-11-01 11:51:32 · 4159 阅读 · 2 评论