Leetcode
记录解决leetcode的题目解决答案
PushyTao
这个作者很懒,什么都没留下…
展开
-
[leetcode] 面试题 17.20. 连续中值 | 对顶堆维护动态中位数
力扣面试题 17.20 连续中值原创 2022-10-15 21:46:05 · 281 阅读 · 3 评论 -
[leetcode] 827. 最大人工岛 | 二维并查集
二维并查集,贡献统计原创 2022-09-14 17:00:13 · 203 阅读 · 0 评论 -
[leetcode] 828. 统计子串中的唯一字符
leetcode 828统计子串中的唯一字符原创 2022-09-06 19:23:48 · 944 阅读 · 0 评论 -
[leetcode]19 删除链表的倒数第 N 个结点 | 链表模拟
链表删除倒数第n个节点原创 2022-09-01 22:41:57 · 150 阅读 · 1 评论 -
[leetcode] 1675. 数组的最小偏移量 | 思维贪心 | 大疆笔试题
leetcode1675原创 2022-08-12 23:50:04 · 240 阅读 · 0 评论 -
[leetcode] 522. 最长特殊序列 II 暴力 + 双指针
最长特殊序列ii -暴力 + 双指针原创 2022-06-27 22:22:21 · 1592 阅读 · 0 评论 -
[leetcode] 1305. 两棵二叉搜索树中的所有元素 | 遍历
给定两棵二叉搜索树,给出两棵树上所有元素的节点值从小到大的排列遍历树上所有的节点,然后记录结点的值放在集合中排序后进行输出Java_code:class Solution { List<Integer> ret = new ArrayList<>(); public List<Integer> getAllElements(TreeNode root1, TreeNode root2) { if(root1 != null) df.原创 2022-05-01 21:42:59 · 311 阅读 · 0 评论 -
[leetcode] 787 K 站中转内最便宜的航班
题目链接题目大意:给定一个有向图,从u→vu\to vu→v有一条长度为www的边问从sss到ttt的路径中,最多经过kkk次中转的最短路径是多少?思路:首先看到题目意思之后,很难不往图论中的最短路去想,然后仔细一想就会发现用图论中的知识维护经过中转的次数顺便求得最短路会稍微有点困难,刚开始用弗洛伊德(动态规划思想)来解决,然后仔细一想,看过数据范围kkk的大小并且已知起点和终点,我们可以考虑使用动态规划的方法来解决首先我们要明确一点:经过kkk次中转则意味着要搭乘k+1k+1k+1次车,所以原创 2022-04-14 21:04:55 · 716 阅读 · 1 评论 -
[leetcode] 2024. 考试的最大困扰度 | 双指针
题目链接题意:给出只含有两种字符的字符串以及一个次数限制k,问最多修改k个位置(T->F/F->T),最大的连续的字符串的长度是多少思路:双指针/滑动窗口假如说我们要找修改后连续的T最长的长度,我们可以{枚举右端点,并统计当前不等于’T’的字符串的个数,并且统计数量,记为cntcntcnt如果说左区间到右区间的cntcntcnt 是否 小于等于 k{(1)如果说数量上大于k了,就只能让左端点向右,并记录cnt的减小情况,直到cnt <= k}过程中统计区间长度并记录最大原创 2022-03-29 11:40:04 · 348 阅读 · 0 评论 -
[leetcode] 2039. 网络空闲的时刻 | BFS
题目链接题意:给定一张n个点不含重边的无向图,点的编号从0开始到n-1,两点之间如果有连边,可以认为耗时为1秒1->n-1的点都需要向0号点发送消息(从第0秒开始)在0号收到消息之后,会回复消息;从第一秒开始,如果1->n-1号服务器经过patiennce[]时间都还没有收到回复的消息,那么就会重新发送请求的消息问最早的网络中没有消息传输的时间是什么时候思路:最早的没有消息传输的时间为所有点空闲的时间中最晚的那个时间节点bfs设一个点u到0号点的距离为dis,并且经过t秒后原创 2022-03-20 22:56:53 · 548 阅读 · 0 评论 -
[leetcode] 432. 全 O(1) 的数据结构 | STL 双向链表&哈希
题目链接之前没有做过这种类型的题目,看到的时候一脸蒙圈看了官方题解之后,了解到这个是双向链表然后来写一下题解:我们可以维护一个链表,这个链表是一个双向的,把这个链表维护成从头节点到尾节点是单调递增的,然后我们就可以很好的通过头尾返回出现次数最多(尾部)和出现次数最小的字符串(头部)在这个链表里面,我们存入两个部分,用pairpairpair做在一起,第一部分是存放stringstringstring的unorderedsetunordered_setunorderedset容器keyskeys原创 2022-03-16 22:34:53 · 637 阅读 · 0 评论 -
[leetcode] 2049 统计最高分的节点数目 | dfs二叉树
题目链接记录父亲节点的深度优先遍历不经常写,然后把给出的数据改成记录子节点,然后对根进行dfsdfsdfs,记录以当前节点为根的结点的数量,然后枚举删除某个节点的情况下的分数是多少{需要讨论当前节点是否为根}然后统计最大值并记录个数Code:class Solution {public: int cnt[100000 + 1]; vector<int> son[100000 + 1]; int countHighestScoreNodes(vector&l原创 2022-03-11 18:17:45 · 1002 阅读 · 0 评论 -
[leetcode] 798 得分最高的最小轮调 - 思维dp
题目链接轮调实际上是这个样子的:每次讲最前面的元素放到数组最后,然后将所有元素集体向前移动一位在当前值a[i]≤ia[i] \leq ia[i]≤i的时候会获得111分,问最大的的分是多少?先说明一个事实:一次轮调之后,对于除了最前面的每个数,他的下标会减小111,而对于最前面的那个数,他的下标直接变为最大大致分为以下三种情况:本来a[i]a[i]a[i]就小于下标iii,轮调之后下标减小值不变,所以依旧会获得111分本来a[i]==ia[i] == ia[i]==i,轮调之后,下标减小原创 2022-03-09 21:26:53 · 199 阅读 · 0 评论 -
[leetcode]剑指 Offer 32 - III. 从上到下打印二叉树 III BFS二叉树
题目链接二叉树简单遍历将访问的序列存入vectorvectorvector,对于每一层交替从左向右从右向左我们可以设置一个变量flag来决定方向用preprepre表示上一层的节点数量,用cntcntcnt求得上本层的节点数量,在遍历的时候遇到一个点就将pre−1pre-1pre−1,如果说preprepre为0了,那么就说明上一层的节点已经访问完毕,然后将在该过程中访问得到valvalval的vectorvectorvector集合存入答案,根据flagflagflag的值进行判断是否需要逆置C原创 2022-03-06 18:42:41 · 110 阅读 · 0 评论 -
[leetcode] 适合打劫银行的日子 -前缀和
题目链接前缀和思想用数组l[]l[]l[]表示前面有多少个数满足a[i−1]>=a[i]a[i-1] >= a[i]a[i−1]>=a[i]用数组r[]r[]r[]表示前面有多少个数满足a[i]<=a[i+1]a[i] <= a[i+1]a[i]<=a[i+1]O(n)遍历之后得到l[],r[]l[],r[]l[],r[]然后O(n)找满足l[i]>=time && r[i]>=timel原创 2022-03-06 16:05:32 · 270 阅读 · 0 评论 -
[leetcode] 连接所有点的最小费用 -MST
题目链接最小生成树板子题可以用并查集实现,贪心排序边权代码有点套娃(class Solution {private: int fa[1007]; int cnt = 0; typedef pair<int, pair<int, int> > pir; void init() { for (int i = 0; i < 1007; i++) fa[i] = i; } int _find(int u)原创 2022-03-05 21:10:03 · 7946 阅读 · 0 评论 -
[leetcode] 1 比特与 2 比特字符-水题
题目链接指针iii从000开始往后走,如果当前位置的值为000,则一定是第一种情况,指针向右移一位如果说当前值为111,则一定是第二种情况,指针向右移动两位,如果说最终i==bits.size()−1i == bits.size() - 1i==bits.size()−1那么说就是一个合法的class Solution {public: bool isOneBitCharacter(vector<int>& bits) { int i;原创 2022-03-05 20:33:36 · 311 阅读 · 0 评论 -
[leetcode] 最多可达成的换楼请求数目 暴力水题
题目链接二进制暴力枚举就行了:class Solution {public: int maximumRequests(int n, vector<vector<int>>& requests) { int cnt[21]; int len = requests.size(); int lim = (1 << len); int ans = 0; for(int i =原创 2022-02-28 21:58:16 · 7924 阅读 · 0 评论 -
[leetcode] 最优除法 小思维
题目链接如果是仅有一个数的时候直接返回那个数即可如果有两个数,答案就是“a/b”如果是三个数以上{为了让结果最大,那么说要让被除数更小。在整数的情况下,除法只会让数越除越小,所以说把除了第一个数之外的所有数放在括号里,比如:a/(b/c/d/…/f)}class Solution {public: string optimalDivision(vector<int>& nums) { string ret = ""; int n原创 2022-02-27 20:56:56 · 7205 阅读 · 0 评论 -
[leetcode] 最长公共前缀 简单水题模拟
题目链接根据数据范围来说,我们可以枚举最长公共前缀的长度,长度的范围是[0, minLen(strs)]然后一边枚举长度一边判断是否成功即可还有一种就是将判断是否满足公共前缀写成check函数,然后用二分的方法来得到最长的前缀长度题目很水Code:class Solution {public: bool check(vector<string>& strs, string temp, int len){ int flag = 0;原创 2022-02-26 23:13:10 · 136 阅读 · 0 评论 -
[leetcode] 复数乘法 基础模拟
class Solution {public: string complexNumberMultiply(string num1, string num2) { int shi1 = 0, shi2 = 0; int xu1 = 0, xu2 = 0; shi1 = getShi(num1); shi2 = getShi(num2); xu1 = getXu(num1); xu2 = getXu(nu.原创 2022-02-25 20:32:49 · 760 阅读 · 0 评论 -
[leetcode] 球会落何处 模拟
给出一个矩阵,里面的值为-1 or 1-1的时候是从左上到右下,1的时候是从左下到右上当一个球从上方x(0 < x < m)放入之后,从哪个出口掉落还是无法从出口掉落能通过的情况为:/ / 即某条线为’/’,其左边的线也是’/’,箭头所指为当前斜线 {\ } ↑\ \ 即当前线为’’,其右边的线也是’’,箭头所指为当前斜线{}↑但是还要注意边界问题Code:class Solution {public: vector<in.原创 2022-02-24 23:17:15 · 232 阅读 · 2 评论 -
[leetcode] 鸡蛋掉落 Google面试题 dp
题目链接给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层 x 扔下(满足 1 <= x <= n)。如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中 重复使用 这枚鸡蛋。请你计算并返回要确定 f 确切的值 的 最小操作次原创 2022-02-23 22:11:48 · 362 阅读 · 0 评论 -
[leetcode] 推多米诺 双指针
题目链接一开始想多了,像成了真实生活中的那种会叠加的状态,就比如"RRL"中,左边的两个"R"会让第三个"L"向右边倾斜,直接用前缀和进行操作,但是发现示例1都无法通过,所以说是错的正确的想法是,每一个暂未确定状态的’.‘都由这个字符两侧最相近的字符确定“R…R” 一定是 “RRRRRRRR”,"L…L"同理而对于:“L…R"一定是"L…R”而对于:"R…L"会变成"RRR(.)LLL"两侧往中间挤的情况下,要记得中间的长度是奇数还是偶数进行确定是否有’.’Code:class Solu原创 2022-02-21 22:10:57 · 259 阅读 · 4 评论 -
leetcode买卖股票的最佳时机含手续费
动态规划简单题我们设置二维数组dp[size][2],其中dp[i][0]代表第i 天不持有股票的最大价值其中dp[i][1]代表第i天持有股票的最大价值当天持有股票可以从前一天持有股票和前一天不持有股票现今买入转换得来当天不持有股票可以从前一天不持有和前一天持有现今卖出得到class Solution {public: int maxProfit(vector<int>& prices, int fee) { int siz = prices.si.原创 2021-08-02 21:32:42 · 145 阅读 · 0 评论