![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
513k
十年饮冰,难凉热血!
展开
-
LeetCode.82 删除排序链表中的重复元素 二
总结:此类题原理不难,要小心细节,比如加头结点、注意next越界操作,还有不要吝啬声明变量,重复使用next可能会把自己绕晕。返回时注意,如果r始终未移动,说明相同节点均在前半部分,返回 r->next,二 如果p与q相同,则q前进,直到与p不同,此时删除r与q之间的节点即可。LeetCode.82 删除排序链表中的重复元素 二。1,提供的是无空头链表,需要加一个头结点来统一操作。一 如果p与q不同,则p,q,r,均前进;r:记录前一个节点,方便删除操作。否则,返回原 head。2,使用三个工作指针。原创 2024-01-15 12:27:32 · 430 阅读 · 0 评论 -
Leetcode.1619 删除某些元素后的数组均值 简单
思路:先进行排序,正序倒序都行,然后求中间90%的元素的和再平均即可。Leetcode.1619 删除某些元素后的数组均值。时间复杂度 O(nlogn),排序和求和所用时间。空间复杂度 O(logn),排序需要栈空间。原创 2022-09-14 11:11:55 · 186 阅读 · 1 评论 -
Leetcode.670 最大交换 中等
Leetcode.670 最大交换 中等。时间复杂度:O*(log2*² num)空间复杂度:O*(log2 num)原创 2022-09-13 11:02:32 · 290 阅读 · 0 评论 -
Leetcode.1608 特殊数组的特征值
Leetcode.1608 特殊数组的特征值。原创 2022-09-12 11:13:43 · 168 阅读 · 0 评论 -
Leetcode.1598 文件夹操作日志搜集器 简单
读懂题目就行了,就是简单的判断,判断logs字符串数组里的字符串,假设我们的初始路径 ans = 0;/” ,且ans > 0那么ans -= 1;Leetcode.1598 文件夹操作日志搜集器 简单。如果是 “x/”,那么ans += 1;如果是 “./”,那么ans不变;遍历结束,ans就是答案。原创 2022-09-09 10:21:42 · 161 阅读 · 0 评论 -
Leetcode.667 优美的排列2 中等
就是一道找规律题,首先我们假设1到n是顺序排列的,那么此时里面只有一个整数1;我们打乱一下顺序,把前面几项打乱为[ 1 3 2 …],后面的项依然是顺序排列,现在就有两个整数1和2。到这里基本上就能看出端倪了,我们只需要让前面k+1项打乱,满足k个数,让后面的k+2~n项都顺序排列就行。1 5 2 4 3 现在,两两之间的差为 4 3 2 1。1 2 3 4 5 五个数,现在两两之间的差都为1,我们打乱。时间复杂度 O(n) 虽然有三个循环,但是只会遍历一遍n。我没看出这样的排列哪里优美了。原创 2022-09-08 10:28:48 · 85 阅读 · 0 评论 -
Leetcode.687 最长同值路径 中等
leftMaxVal和右分支的最长同值路径rightMaxVal,这时leftMaxVal + rightMaxVal就是这个root节点的最长同值路。径,将这个路径长度与我们的最终答案比较,如果比res大,就更新res。只需要在此基础上添加我们所需要的判断就行,对于一个root节点,我们要找到它的左分支的最长同值路径。DFS是比较熟悉的,就是递归判断的时候还是不太清晰,得想半天,还得加强这种类型的题的练习。要求的是最长的路径,那我们把每条路径都找出来,然后更新保存最长的即可。原创 2022-09-02 11:49:33 · 74 阅读 · 0 评论 -
Leetcode.1475 商品折扣后的最终价格 简单
然后判断是否栈空,栈空就说明后面没有比此数组元素还要小的元素,就是原价,栈不为空就打折,此时打折的价格就是减去栈顶元素。前面的解法使用了双重循环遍历,时间复杂度较大,单调栈的核心思维就是寻找右边更小的元素时不需要遍历数组,如果栈不为空且栈顶元素比此位置数组元素大,就出栈,重复操作,直到栈为空或者栈顶元素小于此数组元素。空间复杂度为O(1),返回值不计入空间复杂度。时间复杂度为O(n),一个循环遍历数组。时间复杂度为O(n²),n是数组长度。空间复杂度为O(n),栈占用空间。从数组右端开始遍历,...原创 2022-09-01 11:35:09 · 185 阅读 · 0 评论 -
Leetcode.946 验证栈序列 中等
3、每入栈一个,就检查,如果popped数组和stack栈都不为空,且栈顶和数组头元素一样,就出栈并删除popped数组头元素,这里的检查使用while循环深入,直到不满足条件为止。4、最后检查栈是否为空,为空就说明全部出栈成功,返回true,否则返回false。Leetcode.946 验证栈序列 中等。2、把pushed里的数据一个一个入栈。...原创 2022-08-31 10:30:17 · 1007 阅读 · 0 评论 -
2022/6/26每日一题———黑名单中的随机数
题目:黑名单中的随机数个人思路:直接得到0~n范围一个随机数,然后判断是不是在黑名单里面,不在的话就输出,在的话就重复执行pick()函数。缺点很明显,如果得到了一个随机数在黑名单中,那我们就需要重新得到一个随机数,最坏的情况需要执行m次随机数获取,与题意不符。参考思路:使用映射,假设把0 ~ n-1的数字分成两个部分,0 ~ n-m部分是白名单,n-m ~ n是黑名单,m是黑名单元素个数。这样我们得到了一个随机数,直接判断他是不是在黑名单,不是的话就直接输出,是的话就输出白名单里的数字,而输出白原创 2022-06-26 16:44:11 · 236 阅读 · 0 评论 -
2022/4/21每日一题———山羊拉丁文
题目:山羊拉丁文解题办法:简单模拟即可,直接看代码class Solution {public: bool judgeyuan(char a) { cout << a << endl; if(a == 'a' ||a == 'e' || a == 'i' || a == 'o' || a == 'u') return true; if(a == 'A' ||a == 'E' || a =原创 2022-04-21 16:29:08 · 231 阅读 · 0 评论 -
2022/4/20每日一题———文件的最长路径
题目:文件的最长路径解题办法:从题目中给出的图片即可看出,文件路径明显是一个多叉树,题目中给出的文件路径格式,是树的前序遍历的结果既然是树,然后又要查找最长路径,那直接就是DFS,因为很明显,文件只能是叶子节点,而目录既可以是叶子节点,也可以不是。既然明确了用DFS,那就简单了,由于需要记录深度和长度,所以需要栈结构来储存,看代码:class Solution {public: int lengthLongestPath(string input) { int n =原创 2022-04-20 20:31:35 · 395 阅读 · 0 评论 -
每日一题-搜索二维矩阵
2021年10月25日每日一题:搜索二维矩阵https://leetcode-cn.com/problems/search-a-2d-matrix-ii/解法1:遍历class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { for (const auto& row: matrix) { for (in原创 2021-10-25 22:53:01 · 102 阅读 · 0 评论 -
每日一题:大礼包
2021年10月24日每日一题::大礼包问题难度:中等感悟:一顿操作猛如虎,bug查得真辛苦。思路好像都一样,一看细节多到吐。官方题解:记忆搜索class Solution {public: map<vector<int>, int> memo; //记录needs的状态和此状态下的最优解 int shoppingOffers(vector<int>& price, vector<vector<int>>&am原创 2021-10-24 13:05:41 · 2378 阅读 · 0 评论 -
数字1的个数——每日一题第五天
老规矩,先看题目:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。n <= 2的九次方例如:16 answer = 9;解:1 、10 、 11 、 12、 13 、14 、15 、16注意11里面有两个1。来源:力扣(LeetCode)应该理解了,下面看题解1、暴力解枚举所有小于n的数,再对每个数里的1做统计。代码:class Solution { public int countDigitOne(int n) { int an原创 2021-08-13 13:01:09 · 290 阅读 · 1 评论 -
等差数列划分——每日一题第四天
题目如下:如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。来源:力扣(LeetCo原创 2021-08-11 14:26:23 · 229 阅读 · 0 评论 -
第N个泰波那契数——每日一题第三天
先看题目:泰波那契序列 Tn 定义如下:T(0) = 0, T(1) = 1, T(2) = 1, 且在 n >= 0 的条件下 T(n+3) = T(n) + T(n+1) + T(n+2)给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1: 输入:n = 4 输出:4 解释: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4示例 2: 输入:n = 25 输出:1389537来源:力扣网这是泰波那契数列,不是斐波拉契,虽然差不多哈哈哈原创 2021-08-08 13:50:47 · 302 阅读 · 0 评论 -
找到最终的安全状态——每日一题第二天
每日一题:欠了三天了,今天周六,没得玩,得把这几天的算法题补上。。在有向图中,以某个节点为起始节点,从该点出发,每一步沿着图中的一条有向边行走。如果到达的节点是终点(即它没有连出的有向边),则停止。对于一个起始节点,如果从该节点出发,无论每一步选择沿哪条有向边行走,最后必然在有限步内到达终点,则将该起始节点称作是 安全 的。返回一个由图中所有安全的起始节点组成的数组作为答案。答案数组中的元素应当按 升序 排列。该有向图有 n 个节点,按 0 到 n - 1 编号,其中 n 是 graph 的节点数原创 2021-08-07 15:07:47 · 153 阅读 · 0 评论 -
有效三角形的个数——每日一题第一天
每日一题:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:1、数组长度不超过1000。2、数组里整数的范围为 [0, 1000]。这是题目描述,下面来看题解。要组成三角形,那三条边就要满足这个关系:1、a + b > c;2、a + c > b;3、b + c > a;一、暴力枚举三个fo原创 2021-08-05 11:44:53 · 280 阅读 · 0 评论 -
算法合集------第二天
2021年4月蓝桥杯软件类省赛欢迎访问 我的网站所有的算法题都是我从网上摘抄的,目的在于提升自己的算法能力,若有侵权,联系删除。1、暴力遍历解#include <iostream>using namespace std;int main(){ int c = 1; int count[10]; for (int i = 0; i <= 9; i++) count[i] = 2021; while (1) { int k = 0; int b = c;原创 2021-05-11 22:25:47 · 63 阅读 · 0 评论 -
算法合集------第一天
两数相加解法两数相加暴力遍历逐一相加,不用补齐0欢迎访问 我的网站我会持续更新力扣算法题,虽然我C++也这样说的…C++写不了,我学得太快了,一天学的够写几千字,更新不了。(吐血)。。。看题:我使用了两种解法(借鉴了别人)暴力遍历代码:class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* A = l1; Li原创 2021-05-06 22:31:30 · 60 阅读 · 2 评论