LeetCode
文章平均质量分 66
沉迷单车的追风少年
CSDN博客专家,CSDN商业化专家,官方内容合作伙伴,官方认证“人工智能领域优质创作者”,入选2023年中国开发者影响力年度榜单。
代表专栏《Diffusion Models与深度学习》、《手把手写深度学习》、《深度学习-计算机视觉》、《手把手写C++服务器》等。
展开
-
0/1背包问题——从LeetCode题海中总结常见套路
问题讨论01背包问题公式为什么状态压缩到一维时候需要逆序?怎样求次数?转化成最大和sum/2的01背包:LeetCode.416.分割等和子集转化成最大和sum/2的01背包:LeetCode1049.最后一块石头的重量IILeetCode.494.目标和回溯超时转换成01背包LeetCode.474.一和零阿里笔试原题:LeetCode.879.盈利计划原创 2023-04-22 07:45:00 · 643 阅读 · 18 评论 -
阿里巴巴专场——第322场周赛题解
目录模拟法:6253.回环句排序后模拟:6254. 划分技能点相等的团队BFS:6255. 两个城市间路径的最小分数BFS:6256. 将节点分成尽可能多的组 这道题直接按照题目的意思暴力模拟即可:排序后模拟:6254. 划分技能点相等的团队先排序后,判断第i个和第n-i个加起来的和是否相等,如果不相等,直接返回-1结束。然后把这些加和,返回结果即可。BFS:6255. 两个城市间路径的最小分数BFS:6256. 将节点分成尽可能多的组 贴一个大佬的回答吧:https:/原创 2022-12-04 17:19:37 · 597 阅读 · 6 评论 -
佳期投资专场——第321场LeetCode周赛题解
直接双指针遍历,让指向字符串s的指针走的快,指向字符串t的指针走得慢,tp就是两个字符串相互重复的最大部分。这题的关键在于我们需要从右向左看,但是单向链表逆序遍历又比较麻烦,所以我们先遍历一遍链表,将所有链表的值保存下来。这题我没来得及写完,我当时的思路很简单:回溯得到所有子数组,然后遍历一遍得到符合条件的数量。但是连续子数组用回溯不好写,如果用暴力双循环的话,复杂度O(N*N),这样也过不了。我们可以把前缀和计算一遍,再把后缀和计算一遍,这个复杂度是O(N+N)原创 2022-11-27 14:59:11 · 750 阅读 · 4 评论 -
LeetCode AutoX 安途智行专场竞赛题解
今天下午正好有空,再打一场周赛吧。原创 2022-08-28 17:46:44 · 568 阅读 · 3 评论 -
LeetCode地平线专场——第308场周赛题解
很久没做周赛了,上次做周赛还是本科期间(两年前),因为过几个月就要找实习了,所以最近开始打周赛,希望能继续加油。原创 2022-08-28 13:08:21 · 319 阅读 · 2 评论 -
字节跳动技术训练营—后端开发专场 机试题解
目录1、扑克牌重新洗牌2、二叉树的路径总和3、剧本杀但是由于牛客的笔试环境不能截图,离开三次就算作弊,所以我只能靠回忆写一写题目。1、扑克牌重新洗牌大概意思是说有一副扑克牌,需要重新洗牌。黑桃、红桃、方块、梅花。分别代表不同的数组,例如黑桃是1、2、3、4……13;红桃是21、22、23……但是洗牌的时候不能打乱原本牌组内部的顺序。也就是只是将黑桃、红桃、方块、梅花四组按顺序排好,但是内部的顺序不管。这题很简单,暴力一下直接一个sort都能通过40%。...原创 2021-10-16 21:01:33 · 2382 阅读 · 8 评论 -
【国庆七天乐】LeetCode算法14天集训营题解(1~7天)
国庆正好空闲,想着好久没有刷题了(太懒),应该push自己一点,那就看看简单的算法集训营吧~在数学和计算机科学之中,算法是一个被定义好的、计算机可施行之指示的有限步骤或次序,常用于计算、数据处理和自动推理。作为一个有效方法,算法被用于计算函数,它包含了一系列定义清晰的指令,并可于有限的时间及空间内清楚的表述出来。目录第一天:二分查找LeetCode704.二分查找LeetCode278.第一个错误的版本LeetCode35.搜索插入位置第二天:双指针LeetCode9..原创 2021-10-10 19:42:50 · 588 阅读 · 4 评论 -
LeetCode shell 题解(全)
LeetCode上shell一共就四题,但涉及的知识点可不少,有tr、grep、awk、sed等等,非常值得练练手,希望LeetCode官方能多提供一些shell练习,毕竟shell是一名C++程序员的童子功呀!目录LeetCode.192.统计词频LeetCode 193.有效的电话号码LeetCode 195.第十行原创 2021-04-20 18:58:56 · 1606 阅读 · 12 评论 -
数学/基础数论——从LeetCode题海中总结常见套路
今天是大年初一,祝大家新年快乐!原创 2021-02-12 14:46:11 · 571 阅读 · 4 评论 -
哈希表——从LeetCode实战中总结常用套路
本来想总结一下套路,结果写完发现这一篇博客成了水题合集不过还是有很多思考与启发的!目录LeetCode1365.有多少小于当前的数字LeetCode771.宝石与石头LeetCode面试题16.02.单词频率LeetCode1207.独一无二的出现次数LeetCode500.键盘行LeetCode349.两个数组的交集LeetCode面试题03.数组中重复的数字...原创 2020-03-07 21:20:30 · 783 阅读 · 1 评论 -
从“类中sort()第三个参数问题”聊起——static、const and lambda
目录LeetCode452.用最少数量的箭引爆气球为什么是static?第三个参数需要一直是static吗?改进1:pass by reference-to-const大幅优化时间改进2:lambda横空出世参考:LeetCode452.用最少数量的箭引爆气球先看一下题目,题目是每日一题推荐的,在这篇博客里题目是什么意思并不重要,主要思路是利用sort排序贪心来做。其中重点看一下我sort()这行代码以及我之后的优化过程。为什么是static?现在我想利用sort原创 2020-11-23 22:55:52 · 598 阅读 · 0 评论 -
LeetCode商汤专场——第216场周赛题解
目录T1.5605.检查两个字符串数组是否相等T2.5606.具有给定数值的最小字符串T3.5607.生成平衡数组的方案数T4.5608.完成所有任务的最少初始能量T1.5605.检查两个字符串数组是否相等class Solution {public: bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) { string原创 2020-11-22 15:35:50 · 1673 阅读 · 12 评论 -
回文——LeetCode题海实战总结
前言:今天是1024程序员节,先祝大家节日快乐!回文类题目的核心是双指针法,稍微进阶的题目会要先要进行一些预处理,再难一点的题目会结合动态规划、数论、链表等形式进行考察。原创 2020-10-24 11:55:38 · 467 阅读 · 4 评论 -
LeetCode蔚来专场——第208场周赛题解
class Solution {public: int minOperations(vector<string>& logs) { int depth = 0; for (int i = 0; i < logs.size(); i++) { if (depth > 0 && logs[i] == "../") { depth--; ...原创 2020-09-27 16:52:48 · 395 阅读 · 0 评论 -
LeetCode智加科技专场——第207场周赛题解
T1.重新排列单词间的空格不多说了,WA两次才AC,caoleclass Solution {public: string reorderSpaces(string text) { int blankNum = 0; int wordNum = 0; vector<string> v; string ans; for (auto elem : text) { ...原创 2020-09-21 20:51:11 · 311 阅读 · 0 评论 -
反转字符串——从LeetCode题海中总结常见套路
前言:面试一般很少出现这类题目,但是笔试经常有,反转字符串还是能体现很多编程基本功的。下面就LeetCode当中所有反转字符串的题目全部一网打尽。反转链表也是一类经典的题目,值得专门写一篇blog,本文不表。原创 2020-08-30 16:03:59 · 336 阅读 · 2 评论 -
高频数组合集——从LeetCode题海中总结常见套路
之前总结过一篇数组水题合集:数组水题合集——LeetCode题海实战汇总,这里总结一下高频数组合集原创 2020-09-23 22:23:18 · 1199 阅读 · 3 评论 -
LeetCode美团专场——第203场周赛题解
目录T1. 5495. 圆形赛道上经过次数最多的扇区T2. 5496. 你可以获得的最大硬币数目T3. 5497. 查找大小为 M 的最新分组T4. 5498. 石子游戏 VT1. 5495. 圆形赛道上经过次数最多的扇区这一题直接暴力模拟即可,注意圆环有一个开闭区间的问题,还有最后的一个数会没有被计数上,要单独判断class Solution {public: vector<int> mostVisited(int n, vector<int.原创 2020-08-24 08:56:00 · 352 阅读 · 0 评论 -
买卖股票——从LeetCode题海中总结常见套路
这是一类很著名很经典的问题,经常在字节等面试中看见,对深入理解记忆化搜索、动态规划、状态机等技巧非常有帮助,写一篇文章来细细玩味这类问题!目录经典记忆化搜索:LeetCode121.买卖股票的最佳时机两次遍历,一次找最小值,一次找最大值:时间上进行优化:空间上进行优化:类似的记忆化搜索:剑指offer63.股票的最大利润意料之外的贪心:LeetCode122.买卖股票的最佳时机IIDP状态机:LeetCode123.买卖股票的最佳时机III状压DP:LeetCode188原创 2020-07-12 17:51:46 · 434 阅读 · 6 评论 -
字母异位——从LeetCode题海中总结常见套路
字母异位词在NLP领域中很有用处,同时最早在十几年前微软的面试中被奉为经典,这类题可以涉及哈希表、滑动窗口、、动态规划、双指针等综合知识点,其中也是套路满满,奇技淫巧也是层出不穷,这里仅仅总结一下常见的套路,求道不求术,小众方法、歪门邪道暂且不表。目录最主要的套路有两个:套路入门级:LeetCode242.有效的字母异位词建立哈希表法建立26个字母表法建立字母表:LeetCode1347.制造字母异位词的最小步骤建立哈希表法:LeetCode49.字母异位词分组多种套路:Le原创 2020-07-09 19:52:02 · 554 阅读 · 3 评论 -
数字操作——从LeetCode题海中总结常见套路
异常处理溢出情况:LeetCode7.整数反转转换成字符串处理:LeetCode9.回文数统计5因子的个数:LeetCode172.阶乘后的零数论位数根:LeetCode258.各位相加常规解法:找规律:原创 2020-07-05 20:39:41 · 472 阅读 · 2 评论 -
二维矩阵——从LeetCode题海中总结常见套路
二维矩阵的有套路吗?当然有,但是不如回溯、贪心这类题有模板,但是很多题的思路可以举一反三的!目录二维矩阵中的经典:LeetCode54.螺旋矩阵剑指offer经典:LeetCode74.搜索二维矩阵类似上一题的:LeetCode240.搜索二维矩阵II二维二分法:LeetCode378.有序矩阵中第K小的元素二维矩阵中的经典:LeetCode54.螺旋矩阵这道题的思路很清晰,但是一次AC难度可不小,可以当做一个经典模板题来处理!class Solution {publ原创 2020-07-05 11:39:31 · 707 阅读 · 0 评论 -
从LeetCode.strStr()出发理解KMP算法
目录从一道LeetCode谈起双指针(暴力)解法KMP出场C语言描述C++描述参考最早接触KMP算法应该是在一年前,当时买了北邮的那本数据结构与STL,由于是给通信背景的学生用的,并且教材是NLP出身的老师写的,所以介绍了KMP算法(一般数据结构教材里根本没有这个),但是短短几行根本没弄懂从一道LeetCode谈起双指针(暴力)解法这是最容易想到的方法顺利ACclass Solution {public: int strStr(string原创 2020-06-27 19:47:45 · 489 阅读 · 0 评论 -
回溯算法进阶——从LeetCode题海中总结常见套路
借鉴回溯思想的递归:LeetCode17.电话号码的字母组合经典可重复回溯框架:LeetCode77.组合基本不可重复回溯模板题:LeetCode面试题08.04.幂集非典型可重复回溯:LeetCode面试题08.09.括号一步一步优化剪枝的可重复回溯:LeetCode39.组合总和套用模板不进行剪枝,超时:可重复计算用的太多,先优化accumulate部分:将求和步骤写进递归中,彻底优化accumlate设置回溯函数起始下标进行剪枝善用this指针和全局变量优化空间复杂原创 2020-05-20 22:49:23 · 963 阅读 · 0 评论 -
经典栈——从LeetCode题海中总结常见套路
主要分成三大类:括号类、栈类设计题、逆波兰类括号类栈题栈的常规思路题:LeetCode20.有效的括号LeetCode1021.删除最外层的括号LeetCode921.使括号有效的最少添加栈类设计题用数组模拟栈:LeetCode1381.设计一个支持增量操作的栈vector模拟:LeetCode155.最小栈双栈模拟队列:LeetCode面试题09.用两个栈模拟队列逆波兰算法及其延伸逆波兰:Leetcode150.逆波兰表达式求值逆波兰延伸:LeetCod原创 2020-04-30 12:16:47 · 447 阅读 · 0 评论 -
回溯算法——从LeetCode题海中总结常见套路
回溯算法简介算法框架可重复回溯算法框架 不可重复回溯算法框架不可重复回溯开胃菜:LeetCode78.子集排序+去重的不可重复回溯:LeetCode90.子集II可重复回溯中选择"不可重复":LeetCode46.全排列可重复回溯中选择"不可重复":LeetCode面试题08.07.无重复字符串的排列组合去重有点麻烦的:LeetCode47.全排列II隐藏的回溯:LeetCode22.括号生成原创 2020-04-24 21:55:17 · 787 阅读 · 2 评论 -
Leetcode经典系列——LRU最近最少使用机制
目录LeetCode题目:用两个栈实现,会超时:哈希+链表改进分析:简写:Least Recently Used,是一种常用的页面置换算法,是一种缓存淘汰策略。计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。但问题是,删除哪些内容呢?我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存里,方便之后继续使用。那么,什么样的数据,我们判定为「有用的」的...原创 2020-04-12 16:36:06 · 662 阅读 · 0 评论 -
经典必刷LeetCode汇总
LeetCode题目分类Hash相关q1_两数之和链表操作q2_两数相加 q19_删除链表的倒数第N个节点 q61_旋转链表 q138_复制带随机指针的链表 q206_反转链表双指针遍历/滑动窗口q3_无重复字符的最长子串 q11_盛最多水的容器 q15_三数之和 q16_最接近的三数之和 q26_删除排序数组中的重复项 q42_接雨水 q121_买卖股票的...原创 2020-04-12 15:04:05 · 3785 阅读 · 2 评论 -
字符串水题——从LeetCode题海中总结常见套路
字符串的题大部分都很水,但是一些企业机试经常出现(比如华为)另外不水的题常常和DP/贪心/回溯连在一起比较难,还是多练吧后面用Golang提交试试水,最近在学Golang,非常有意思原创 2020-04-05 09:46:46 · 468 阅读 · 0 评论 -
由经典“接雨水”问题引发的思考——从LeetCode题海中总结常见套路
leetcode面试题17.21.直方图的雨量解法一:解法二:从每个点的角度来优化算法相同的思路解决:LeetCode121.买卖股票的最佳时机原创 2020-04-01 12:16:39 · 564 阅读 · 1 评论 -
LeetCode331.验证二叉树的前序序列化
题目:思路:这道题是我今天目前碰到最有意思的题,首先思考只有前序遍历是无法完全确立重建二叉树的在无法确立二叉树的情况下,得想想二叉树的其他性质利用性质:空节点视为叶节点,根据性质叶节点数目比非叶节点数目多1来判断。我们可以定义一个概念,叫做槽位,二叉树中任意一个节点或者空孩子节点都要占据一个槽位。二叉树的建立也伴随着槽位数量的变化。开始时只有一个槽位,如果根节点是空节...原创 2020-03-31 10:23:59 · 286 阅读 · 0 评论 -
栈——从LeetCode题海中总结常见套路
LeetCode1021.删除最外层的括号这题真妙啊,要不是看了评论区,怎么也不会想到可以用栈来求解!class Solution {public: string removeOuterParentheses(string S) { string res = ""; stack<char> mystack; for (int i = 0; i <...原创 2020-03-30 23:12:16 · 547 阅读 · 0 评论 -
二分搜索——从LeetCode题海中总结常见套路
LeetCode852.山脉数组的峰顶索引笨方法当然是找到最大值的下标然后垫底class Solution {public: int peakIndexInMountainArray(vector<int>& A) { vector<int> a(A.begin(),A.end()); sort(a.be...原创 2020-03-21 16:19:09 · 400 阅读 · 0 评论 -
旋转、反转、重排链表——从LeetCode题海中总结常见套路
目录LeetCode92.反转链表II栈解法常规链表操作解法:LeetCode61.旋转链表LeetCode143.重排链表先来段投机的:正常链表操作:LeetCode328.奇偶链表很符合队列的性质,先用双队列A了正常链表操作:LeetCode92.反转链表II首先不涉及链表的新增,所以第一想法就是用栈解决栈解法/** * Def...原创 2020-03-18 17:20:43 · 498 阅读 · 0 评论 -
新建链表——从LeetCode题海中总结常用套路
新建链表基本方法:新建链表类型题目的套路:这一类满满的套路,对指针的理解要求比较深入,如果不没总结过套路的话,肯定一脸懵逼……首先new一个头指针 ListNode* head = newListNode(0); 然后定义一个当前结点,并指向头指针 ListNode* cur = head; 接下来对cur结点进行操作; 每次一顿操作完之后记得将 cur = cur-&...原创 2020-03-16 21:47:40 · 890 阅读 · 0 评论 -
剑指offer——四种方法解链表相交
目录LeetCode面试题02.07.链表相交思路一:暴力解法思路二:栈思路三:长链表先走思路四:双指针LeetCode面试题02.07.链表相交看图,相交是这个意思:思路一:暴力解法面试要是这么写就挂了……思路二:栈因为链表只能从前到后进行遍历,而如果两个链表会相交的话,从后面倒数n个都会是相同的 这种先入后出的形式明显是栈 以空间换取...原创 2020-03-16 17:02:17 · 261 阅读 · 0 评论 -
归并排序与链表
数组的归并排序:典型的分治思想//归并排序#include <iostream>using namespace std;const int MAX = 500;const int SENTINEL = (1<<21);//定义无穷大的数int L[MAX/2+2],R[MAX/2+2];//定义长度的时候记得+2void merge(int A[]...原创 2020-03-16 09:46:51 · 255 阅读 · 4 评论 -
数组水题合集——LeetCode题海实战汇总
目录LeetCode1295.统计位数为偶数的数字LeetCode面试题16.01.交换数字LeetCode1313.解压缩编码列表LeetCode1351.统计有序矩阵中的负数LeetCode1295.统计位数为偶数的数字常规解法,一分钟没AC就算不合格吧class Solution {public: int findNumbers(vector<...原创 2020-03-14 22:57:08 · 467 阅读 · 0 评论 -
剑指offer——三步走法原地修改解复制复杂链表
用哈希表不是最佳答案,最好的方法是原地修改法:复制一个新的节点在原有节点之后,如 1 -> 2 -> 3 -> null 复制完就是 1 -> 1 -> 2 -> 2 -> 3 - > 3 -> null 从头开始遍历链表,通过 cur.next.random = cur.random.next 可以将复制节点的随机指针串起来,当然需要判...原创 2020-03-14 10:42:50 · 235 阅读 · 0 评论 -
剑指offer——四指针解链表反转
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL使用四指针来处理当前节点前一节点后一节点反转后的头节点(其实用可以化简)一张图说清![在这里插入图片描述](https://imgconvert...原创 2020-03-13 22:11:40 · 236 阅读 · 0 评论