Leetcode
力扣刷题
菱形继承
懒癌患者,IT民工,前进路上经常磕磕碰碰
展开
-
Leetcode 1723. 完成所有工作的最短时间 (dfs,剪枝)
class Solution {public: int ans=INT_MAX,sum[13]={0}; int minimumTimeRequired(vector<int>& jobs, int k) { dfs(0,k,sum,jobs,0,0); return ans; } void dfs(int u,int k,int sum[],vector<int>jobs,int tepans,int ...原创 2021-05-08 23:21:16 · 194 阅读 · 0 评论 -
Leetcode 612. 平面上的最近距离
select round( pow(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2),1/2),2 ) shortest from point_2d p1 inner join point_2d p2 where p1.x<>p2.x or p1.y<>p2.y order by 1 asc limit 1原创 2021-04-28 16:57:11 · 179 阅读 · 0 评论 -
Leetcode 603. 连续空余座位
(求连续的几个序号都可以用lag和lead这种套路,新增列然后判断)select seat_id from (select * ,lag(free,1) over(order by seat_id) l1,head(free,1) order(order by seat_id) l2 from cinema) A where free=1 and (l1=1 or l2=1)...原创 2021-04-24 23:29:50 · 126 阅读 · 0 评论 -
Leetcode 1815. 得到新鲜甜甜圈的最多组数(模拟退火)
class Solution {public: vector<int>w; int ans=-1,b; int calc(){ int res=1,s=0; for(int i=0;i<w.size();i++){ s=(s+w[i])%b; if(!s&&i<w.size()-1)res++; } ans=max(ans,r...原创 2021-04-10 22:02:20 · 168 阅读 · 0 评论 -
LCP 34. 二叉树染色(树形dp)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int maxValue(TreeNode* root,...原创 2021-04-10 20:21:00 · 215 阅读 · 0 评论 -
Leetcode 第 234 场周赛 D 好因子的最大数目(经典套路 整数拆分问题)
这道题其实是一个很经典的套路,设这个数可以被分解成的形式,那么答案就是问题可以归结成一个数分解成若干个数 然后如何分乘积最大这种题有个结论:如果%3==0,就是都分成3相乘如果%3==1,就是都分成3 然后留4 *2*2如果%3==2 就是留个2数据范围比较大,上快速幂class Solution {public: const int mod=1e9+7; int qmi(int x,int y){ int res=1; w...原创 2021-03-28 19:19:56 · 113 阅读 · 0 评论 -
Leetcode 第 234 场周赛 C 替换字符串中的括号内容(模拟)
水题,直接按要求做就可以class Solution {public: string evaluate(string s, vector<vector<string>>& knowledge) { map<string,string>p; for(int i=0;i<knowledge.size();i++){ p[knowledge[i][0]]=knowledge[i][1];..原创 2021-03-28 19:15:04 · 132 阅读 · 0 评论 -
Leetcode 第 234 场周赛 B 还原排列的最少操作步数(规律)
其实你多写几个就可以知道 当1这个数字恢复到正常位置了就是最小步数,可以去模拟一下,复杂度O(n)class Solution {public: int reinitializePermutation(int n) { int pos=n/2,ans=1; while(pos!=1){ if(pos%2==0)pos=pos/2; else pos=n/2+(pos-1)/2; an..原创 2021-03-28 19:13:44 · 123 阅读 · 0 评论 -
Leetcode 第 234 场周赛 A 5713. 字符串中不同整数的数目(正则语法糖)
利用正则表达式过滤掉字母 最后强转数字、去重 统计数目class Solution: def numDifferentIntegers(self, word: str) -> int: res = re.split(r'[a-z]+', word) #print(res) return len(set([int(i) for i in res if len(i)]))...原创 2021-03-28 19:11:16 · 86 阅读 · 0 评论 -
LeetCode 数据库解题目录(mysql版&含vip题)
花重金氪了一个力扣会员 就为了刷上锁的vip题 数据库其实挺重要的以下是解题目录:175. 组合两个表176. 第二高的薪水原创 2021-03-24 23:15:02 · 1334 阅读 · 24 评论 -
LeetCode 数据库 176. 第二高的薪水
原题链接# Write your MySQL query statement belowselect ifnull( (select distinct Salary from Employee order by Salary desc limit 1 offset 1) ,null) as SecondHighestSalary原创 2021-03-24 23:08:55 · 169 阅读 · 0 评论 -
AcWing 每日一题春季(十三)LeetCode 456. 132模式(单调栈)
原题链接思路:维护一个单调栈,存放最大值,再维护一个变量存放第二大值,从后往前遍历数组,当有元素小于第二大值时返回真。其中单调栈相当于维护了132中的3,而第二大值则维护了2,再往前找一个1就行了。class Solution {public: bool find132pattern(vector<int>& nums) { stack<int>p; int two=INT_MIN; for(int i=原创 2021-03-24 20:01:21 · 136 阅读 · 0 评论 -
每日一题春季系列 (五)LeetCode 150. 逆波兰表达式求值 (栈)
原题链接这道题目我们无需建树后跑后序遍历 可以直接利用每一个操作符之前的两个操作数进行计算 然后压栈最后不断计算直到栈中只有一个操作数即为答案~class Solution {public: int evalRPN(vector<string>& s) { stack<int>p; for(int i=0;i<s.size();i++){ if(isdigit(s[i][0])||(s[i]原创 2021-03-21 22:51:10 · 123 阅读 · 0 评论 -
Leetcode 第 47 场双周赛 D 5683. 统计点对的数目(分类讨论、容斥原理,双指针、树的度)
思路:比赛的时候我不知道如何处理a、b之间有连边 还有平方级别枚举区间怎么优化其实可以这样考虑:可以先跑一遍所有边算各点度,d[x]表示点x的度,然后大体先分两种情况:1.点对中两个点没有连边2.点对中两个点有连边,如果有连边,这个很好处理,跑一遍边就好了,要注意重边,所以我们开一个map存,如果直接遍历边集会重复计数(计数d[a]+d[b]-cnt[a,b]>quert[i]) cnt[a,b]是map中该点对出现次数,这里我们做个处理,比如(1,2)、(2,1)都视为同一个点对..原创 2021-03-07 19:31:22 · 154 阅读 · 0 评论 -
Leetcode 第 47 场双周赛 C 5682. 所有子字符串美丽值之和(暴力 字符串常见套路题)
思路 数据范围比较小 我们可以n方枚举区间 然后求一下字母前缀 然后更新最小值最大值即可class Solution {public: int beautySum(string s) { int a[505][26]={0}; for(int i=0;s[i];i++){ if(i==0){ a[0][s[i]-'a']++; continue; ..原创 2021-03-07 19:19:18 · 180 阅读 · 0 评论 -
Leetcode 第 47 场双周赛 B 5681. 判断一个数字是否可以表示成三的幂的和(数学or暴力)
思路:有一种很聪明的做法就是如果这个数转换为三进制,只要有一位是2就不可能被表示为若干个不同的三的幂之和 因为如果这一位是1 就可以由3的某次方(包括0次)来完成,如果是0也是同理,2就无解在比赛中我是去预处理出1e7以内的所有三的幂然后二进制枚举0就是没取 1就是取1e7以内的所有三的幂大概只有16个直接2^16枚举就可以class Solution {public: bool checkPowersOfThree(int n) { int a[100]={1,3...原创 2021-03-07 17:54:01 · 152 阅读 · 0 评论 -
Leetcode 第 47 场双周赛 A 5680. 找到最近的有相同 X 或 Y 坐标的点(暴力)
思路:按要求从前往后模拟更新答案即可class Solution {public: int nearestValidPoint(int x, int y, vector<vector<int>>& p) { int tep=INT_MAX,ans=-1; for(int i=0;i<p.size();i++){ if(p[i][0]==x||p[i][1]==y){ ..原创 2021-03-07 17:48:27 · 123 阅读 · 0 评论 -
Leetcode 684. 冗余连接(dsu,氵)
684. 冗余连接难度中等260收藏分享切换为英文接收动态反馈在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v],满足u < v,表示连接顶点u和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组...原创 2021-01-13 12:10:14 · 115 阅读 · 0 评论 -
Leetcode1202. 交换字符串中的元素 (dsu,贪心)
解题思路dsu 可以交换视为有连接双向边,只要找出最大联通块然后排序就可以代码class dsu: def __init__(self,n): self.n=n self.f=list(range(n)) self.rk=[1]*n def find(self,x): if self.f[x]!=x: self.f[x]=self.find(self.f[x]) return原创 2021-01-11 20:40:10 · 177 阅读 · 0 评论 -
Leetcode 1483. 树节点的第 K 个祖先(DP,倍增)
给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出,其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。请你设计并实现 getKthAncestor(int node, int k) 函数,函数返回节点 node 的第 k 个祖先节点。如果不存在这样的祖先节点,返回 -1 。树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点。示例:输入:["TreeAncestor","getKthAncestor",.原创 2020-06-15 10:34:29 · 1239 阅读 · 20 评论 -
Leetcode 1444. 切披萨的方案数(DP,类似石材切割,二维前缀和)
1444. 切披萨的方案数给你一个rows x cols大小的矩形披萨和一个整数 k,矩形包含两种字符:'A' (表示苹果)和'.'(表示空白格子)。你需要切披萨 k-1 次,得到k块披萨并送给别人。切披萨的每一刀,先要选择是向垂直还是水平方向切,再在矩形的边界上选一个切的位置,将披萨一分为二。如果垂直地切披萨,那么需要把左边的部分送给一个人,如果水平地切,那么需要把上面的部分送给一个人。在切完最后一刀后,需要把剩下来的一块送给最后一个人。请你返回确保每一块披萨包含至少一个苹...原创 2020-05-11 11:50:54 · 682 阅读 · 2 评论 -
Leetcode 785. 判断二分图(贪心,二分图判定,DFS)
785. 判断二分图给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边:...原创 2020-05-01 16:19:49 · 579 阅读 · 10 评论 -
Leetcode 1320 二指输入的的最小距离(多情况讨论,DP)
1320. 二指输入的的最小距离二指输入法定制键盘在 XY 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处,例如字母A位于坐标(0,0),字母B位于坐标(0,1),字母P位于坐标(2,3)且字母Z位于坐标(4,1)。给你一个待输入字符串word,请你计算并返回在仅使用两根手指的情况下,键入该字符串需要的最小移动总距离。坐标(x1,y1)和...原创 2020-04-10 09:50:51 · 246 阅读 · 0 评论 -
Leetcode 1319 连通网络的操作次数(并查集)
1319. 连通网络的操作次数用以太网线缆将n台计算机连接成一个网络,计算机的编号从0到n-1。线缆用connections表示,其中connections[i] = [a, b]连接了计算机a和b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线connections,你可以拔开任意两台直...原创 2020-04-10 09:49:03 · 252 阅读 · 8 评论 -
Leetcode 77. 组合 (排列组合,回溯)
77. 组合给定两个整数n和k,返回 1 ...n中所有可能的k个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]class Solution {public: vector<vector<int>>a...原创 2020-04-10 09:47:06 · 188 阅读 · 0 评论 -
Leetcode 39. 组合总和(dfs)
39. 组合总和给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。 解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target ...原创 2020-04-10 09:45:34 · 208 阅读 · 0 评论 -
Leetcode 17. 电话号码的字母组合 (dfs)
17. 电话号码的字母组合难度中等653收藏分享切换为英文关注反馈给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字...原创 2020-04-10 09:44:01 · 222 阅读 · 0 评论 -
Leetcode 22. 括号生成 (括号匹配,dfs)
22. 括号生成数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]class Solution { List...原创 2020-04-10 09:42:50 · 255 阅读 · 0 评论 -
Leetcode 45 跳跃游戏 II (贪心+数学)
45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。说明...原创 2020-04-10 09:38:54 · 290 阅读 · 0 评论 -
Leetcode 55. 跳跃游戏 (贪心)
55. 跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例2:输入: [3,2,1,0,4]输出: f...原创 2020-04-10 09:36:32 · 171 阅读 · 0 评论 -
Leetcode 15 三数之和(双指针,去重)
15. 三数之和给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, ...原创 2020-04-10 09:34:37 · 220 阅读 · 0 评论 -
Leetcode 121. 买卖股票的最佳时机 (DP,模拟)
121. 买卖股票的最佳时机给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候...原创 2020-04-10 09:32:30 · 174 阅读 · 0 评论 -
Leetcode 76. 最小覆盖子串 (双指针,map)
76. 最小覆盖子串给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。i是前指针,j是后指针,i>=j,每次遍历的时候次...原创 2020-04-06 21:19:34 · 245 阅读 · 0 评论 -
Leetcode 第23场双周赛D 5363. 做菜顺序(DP,贪心)
做菜顺序一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。一道菜的 「喜爱时间」系数定义为烹饪这道菜以及之前每道菜所花费的时间乘以这道菜的满意程度,也就是 time[i]*satisfaction[i] 。请你返回做完所有菜 「喜爱时间」总和的最大值为多少。你可以按 任意 顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大...原创 2020-04-05 10:11:44 · 442 阅读 · 10 评论 -
Leetcode 第23场双周赛C 5361. 圆和矩形是否有重叠 (计算几何 初中数学)
5361. 圆和矩形是否有重叠给你一个以 (radius,x_center,y_center) 表示的圆和一个与坐标轴平行的矩形 (x1,y1,x2,y2),其中(x1,y1) 是矩形左下角的坐标,(x2,y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回 True ,否则返回 False。换句话说,请你检测是否存在点(xi, yi) ,它既在圆上也在矩...原创 2020-04-05 09:54:42 · 313 阅读 · 0 评论 -
Leetcode 第23场双周赛B 5362. 构造 K 个回文字符串(map,思维)
5362. 构造 K 个回文字符串给你一个字符串s和一个整数k。请你用s字符串中所有字符构造k个非空回文串。如果你可以用s中所有字符构造k个回文字符串,那么请你返回True,否则返回False。示例 1:输入:s = "annabelle", k = 2输出:true解释:可以用 s 中所有字符构造 2 个回文字符串。一些可行的...原创 2020-04-05 09:48:04 · 259 阅读 · 0 评论 -
Leetcode 第23场双周赛A 5360. 统计最大组的数目 (手速题,map)
5360. 统计最大组的数目给你一个整数n。请你先求出从1到n的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。示例 1:输入:n = 13输出:4解释:总共有 9 个组,将 1 到 13 按数位求和后这些组分别是:[1,10],[2,11],[...原创 2020-04-05 09:43:15 · 201 阅读 · 0 评论 -
Leetcode 264. 丑数 II (数论,三指针,类dp)
264. 丑数 II编写一个程序,找出第n个丑数。丑数就是只包含质因数2, 3, 5的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1是丑数。 n不超过1690。这道题暴力会超时,所以换种方法:三指针法具体而言是指置三指针index2,index3,...原创 2020-04-02 22:56:50 · 232 阅读 · 0 评论 -
Leetcode 289. 生命游戏(元胞自动机模拟)
根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细...原创 2020-04-02 11:13:55 · 263 阅读 · 0 评论 -
Leetcode 628. 三个数的最大乘积 (数学)
628. 三个数的最大乘积给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。解题思...原创 2020-03-30 20:56:28 · 230 阅读 · 7 评论