力扣刷题
文章平均质量分 54
提高算法能力
GSX_M
这个作者很懒,什么都没留下…
展开
-
LeetCode.239 -------- 滑动窗口的最大值
LeetCode.239 -------- 滑动窗口的最大值原创 2022-10-08 15:08:05 · 178 阅读 · 0 评论 -
LeetCode - 209. 长度最小的子数组(前缀+二分 , 滑动窗口)
209. 长度最小的子数组解题思路:1.自己写的时间复杂度O(n*logn)首先想到了前缀和,一个辅助的数组sum记录前缀和。①在遍历原数组时判断是否有一个元素值 >= target,如果有则返回1,这肯定是最小的子数组了。②判断最后一个元素的前缀和 ,如果sum[nums.size()+1] < target ,前缀和的最大值都没有 > target,直接返回 0。③先找到前缀和 >= target 的下标 i ,然后从 i 开始向后找在 nums[0.原创 2022-05-12 12:26:03 · 176 阅读 · 0 评论 -
LeetCode - 649. Dota2 参议院
力扣解题思路:通过每一轮的投票,看哪一方最后还剩余可以投票的参议员来判定。通过一个vis数组标志是否有权利进行下一轮投票。r_sum 记录总共的R参议员人数, cir_numr 记录本轮可以投票的R参议员人数。d_sum 记录总共的D参议员人数, cir_numd 记录本轮可以投票的D参议员人数。每一轮,判定当前位置是D or R, 例如当前是D ,如果cir_numr == 0 说明没有R参议员阻止我投票,我可以阻止下一个R参议员投票权 ; 如果cir_numr != 0,那.原创 2022-05-05 18:07:41 · 299 阅读 · 0 评论 -
LeetCode2222. 选择建筑的方案数
2222. 选择建筑的方案数解题思路: (就是找101 ,010的个数)1.暴力求解以每一个数为中心,如果是 1 ,往左边找0,往右边找0, ans += left * right , (left,right都为0的个数) ; 如果是 0 ,往左边找1,往右边找1 , ans += left * right ( left,right都为1的个数 ). 时间复杂度 O(N^2). (超时)代码:class Solution...原创 2022-05-12 16:40:53 · 211 阅读 · 0 评论 -
LeetCode1765. 地图中的最高点(BFS)
力扣解题思路:1.找到水的位置,入队,带出第一层的高度。2.任意相邻的格子高度差 至多 为 1,通过当前节点带出相邻格子的高度,然后把相邻格子入队;3.不断地执行此过程直到队列为空; 也就是由点到面铺开计算。代码:class Solution {public: int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; vector<vector<in...原创 2022-04-21 14:57:07 · 99 阅读 · 0 评论 -
LeetCode面试题 08.08. 有重复字符串的排列组合(DFS)
LeetCode面试题 08.08. 有重复字符串的排列组合(DFS)原创 2022-04-19 16:31:55 · 525 阅读 · 0 评论 -
LeetCode1283. 使结果不超过阈值的最小除数
力扣解题思路:1.暴力求解(超出时间限制)注意向上取整2.优化(二分查找)代码1:暴力class Solution {public: int smallestDivisor(vector<int>& nums, int threshold) { int sz = nums.size(); int div = ...原创 2022-04-18 20:24:23 · 234 阅读 · 0 评论 -
LeetCode640. 求解方程
力扣解题思路:1.将等号左边和右边区分开来计算。2.定义leftnum , leftx,计算 等号左边的数字的和和 x系数的和,定义rightnum, rightx,计算等号右边的数字的和 和 x系数的和。(数字 和 x的系数 不止一位数)3.分别将数字的和 移动到一边,x的系数和移动到另一边,对于不同的情况进行判断,输出结果。class Solution...原创 2022-04-14 12:30:11 · 179 阅读 · 0 评论 -
LeetCode1143. 最长公共子序列 (dp)
LeetCode1143. 最长公共子序列 (dp)原创 2022-04-10 15:36:04 · 444 阅读 · 0 评论 -
LeetCode1438. 绝对差不超过限制的最长连续子数组
LeetCode1438. 绝对差不超过限制的最长连续子数组原创 2022-04-09 18:10:37 · 160 阅读 · 0 评论 -
LeetCode400. 第 N 位数字
力扣解题思路:1.先找到第n位是几位数2.在找到第n位是具体的哪个数字。3.最后找到第n为是哪个数字的第几位。代码:class Solution {public: int findNthDigit(int n) { int digit = 1; // 表示数的位数(个位/十位/百位/...,就是1/2/3/...) int start = 1; // 属于该数位数的起始点数(个位是1,十位是10,百位是100) .原创 2022-04-08 21:34:53 · 345 阅读 · 0 评论 -
LeetCode105. 从前序与中序遍历序列构造二叉树
力扣解题思路:前序确定每个树的根,中序确定左右子树区间。1.创建节点2.划分左右子区间3.递归构造左右子树class Solution {public: TreeNode* _buildTree(vector<int>& preorder,int& pi , vector<int>& inorder , int inBegin...原创 2022-04-07 18:39:22 · 798 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历的非递归写法
二叉树的前序,中序,后序遍历的非递归写法原创 2022-04-07 17:51:03 · 1170 阅读 · 0 评论 -
LeetCode22. 括号生成 (BFS)
力扣解题思路:如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。总结:1.左括号数量 <= n,2.左括号数量 >= 右括号数量3.左括号数量 + 右括号数量 = 2*n , 本次递归结束,返回。class Solution {public: void DFS(vector<string>& ans ,string& str, int n , int lef.原创 2022-04-06 22:42:15 · 328 阅读 · 0 评论 -
LeetCode剑指 Offer 36. 二叉搜索树与双向链表
力扣解题思路:使用一个辅助节点 prev 记录当前节点 cur 的上一个节点。(prev全局只需要有一个)1.cur的左指针作为前驱指针,指向前一个节点prev。2.cur不知道它的下一个节点是谁,但是prev知道它的下一个节点是cur。代码实现:class Solution {public: void Inorder(Node* cur , Node*& prev) { if(...原创 2022-04-06 18:28:57 · 503 阅读 · 0 评论 -
LeetCode236. 二叉树的最近公共祖先
LeetCode236. 二叉树的最近公共祖先原创 2022-04-05 19:00:12 · 703 阅读 · 0 评论 -
LeetCode102.二叉树的层序遍历
力扣解题思路:利用二叉树的前序遍历,使用队列先处理当前层节点,然后把下一层的节点入队,直到队列为空。代码实现:class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ans; if(root == ...原创 2022-04-05 15:57:12 · 511 阅读 · 0 评论 -
LeetCode606. 根据二叉树创建字符串
LeetCode606. 根据二叉树创建字符串原创 2022-04-05 10:39:25 · 257 阅读 · 0 评论 -
LeetCode316. 去除重复字母
LeetCode316. 去除重复字母原创 2022-03-31 11:39:41 · 1059 阅读 · 0 评论 -
LeetCode1333. 餐厅过滤器
力扣解题思路:筛选 + 排序(过滤后返回餐馆的id,按照rating从高到低排序。如果rating相同,那么按id从高到低排序)class Solution {public: //过滤后返回餐馆的id,按照rating从高到低排序。如果rating相同,那么按id从高到低排序 static bool comp(pair<int ,int> x , pair<int ,int> y) { if(x...原创 2022-03-28 21:05:52 · 228 阅读 · 0 评论 -
LeetCode LCP 29. 乐团站位
力扣解题思路: 参考 Deeemo1.第一步定位给定的坐标所在的层数:round= min(xPos, num - 1 - xPos, yPos, nums - 1 - yPos)2.根据图示以及规律 ,计算在该层数之外的路径长度。3 .令 xPos -= round,yPos -= round,将坐标平移到较小的矩形的边上。...原创 2022-03-28 19:17:53 · 235 阅读 · 0 评论 -
LeetCode43. 字符串相乘
LeetCode43. 字符串相乘原创 2022-03-25 22:29:10 · 718 阅读 · 0 评论 -
LeetCode752. 打开转盘锁
LeetCode752. 打开转盘锁原创 2022-03-24 17:39:53 · 398 阅读 · 0 评论 -
LeetCode127. 单词接龙
LeetCode127. 单词接龙原创 2022-03-24 17:05:28 · 1199 阅读 · 0 评论 -
LeetCode994. 腐烂的橘子( BFS )
力扣解题思路: 广度优先搜索1.先找到所有的腐烂橘子,入队 (queue),用第一批带出新一批腐烂的橘子 2.每一批橘子都会在一分钟之内腐烂,所以此题可以转化为求BFS执行的大循环的次数 3.这里的step (次数)的更新需要有一个标记,只有新的腐烂的橘子加入(queue不为空),step才能自加 4.最后BFS执行完之后,说明所有可以被腐烂的都完成了,再去遍历grid,如何还有 值为1的,说明没有办法完...原创 2022-03-24 16:30:52 · 2141 阅读 · 0 评论 -
LeetCode429. N 叉树的层序遍历 ( BFS )
力扣解题思路:层序遍历一般都是要使用queue辅助完成 :对于queue中的元素 ,依次获取节点( 记录当前层的size大小),把当前节点的值加入到当前层的vector 中 ,然后把子节点按序push到 队列中,重复这个步骤, 直到queue为空。1.找到根节点push入队2.在 1 的基础上遍历一层3.在 2 的基础上遍历的同时向下遍历每个节点的子节点4.在 3 的基础上,把遍历时遇到的子节点按左——>右的顺序保存起来重复 1 ,直到在 3 里面没有子节点。...原创 2022-03-24 13:29:06 · 357 阅读 · 0 评论 -
LeetCode剑指 Offer 13. 机器人的运动范围(DFS + 回溯)
LeetCode剑指 Offer 13. 机器人的运动范围(DFS + 回溯)原创 2022-03-21 17:26:00 · 559 阅读 · 0 评论 -
LeetCode299. 猜数字游戏
LeetCode299. 猜数字游戏原创 2022-03-21 17:19:33 · 4180 阅读 · 0 评论 -
LeetCode215. 数组中的第K个最大元素 ( priority_queue 的应用)
LeetCode215. 数组中的第K个最大元素 ( priority_queue 的应用)原创 2022-03-19 11:57:35 · 222 阅读 · 0 评论 -
LeetCode225. 用队列实现栈 (队列的应用)
LeetCode225. 用队列实现栈 (队列的应用)原创 2022-03-19 10:53:03 · 239 阅读 · 0 评论 -
LeetCode232. 用栈实现队列 (栈的应用)
LeetCode232. 用栈实现队列 (栈的应用)原创 2022-03-19 09:55:24 · 192 阅读 · 0 评论 -
LeetCode150. 逆波兰表达式求值 (栈的应用)
LeetCode150. 逆波兰表达式求值 (栈的应用)原创 2022-03-18 21:13:30 · 114 阅读 · 0 评论 -
LeetCode剑指 Offer 31. 栈的压入、弹出序列 ( 栈的应用 )
力扣解题思路:1.先把 push 数组中的值入栈2.pop数组值依次跟栈里面的的数据比较 , 如果相等则 pop数组往后走,不断出栈里面的数据, 直到不相等或者栈为空.3.如果pop数组走完了就是匹配的class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { sta.原创 2022-03-18 20:57:55 · 267 阅读 · 0 评论 -
LeetCode473. 火柴拼正方形(DFS + 回溯)
LeetCode473. 火柴拼正方形(DFS + 回溯)原创 2022-03-18 20:37:53 · 501 阅读 · 0 评论 -
LeetCode826. 安排工作以达到最大收益
LeetCode826. 安排工作以达到最大收益原创 2022-03-18 17:32:44 · 294 阅读 · 0 评论 -
LeetCode1352. 最后 K 个数的乘积 (前缀积)
力扣解题思路:1.正常思路,创建vector , push_back , 计算最后k个积 , 但是超时,时间主要花费在计算k个积上面。2.官方题解复杂度分析时间复杂度:add 和 getProduct 复杂度均为 O(1)。空间复杂度:O(n),需要额外提供一个辅助数组。作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/product-of-the-last-k-numbers/solution/z.原创 2022-03-17 20:42:42 · 284 阅读 · 0 评论 -
LeetCode1109. 航班预订统计 (前缀和 + 差分)
LeetCode1109. 航班预订统计 (前缀和 + 差分)原创 2022-03-17 19:27:34 · 240 阅读 · 0 评论 -
LeetCode:只出现一次的数字 ( 位运算 )
LeetCode:只出现一次的数字 ( 位运算 )原创 2022-03-15 17:53:00 · 82 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
剑指 Offer 39. 数组中出现次数超过一半的数字原创 2022-03-15 17:42:57 · 100 阅读 · 0 评论 -
LeetCode51. N 皇后 (DFS , 回溯)
LeetCode51. N 皇后 (DFS , 回溯)原创 2022-03-15 16:06:06 · 82 阅读 · 0 评论