先宣布一个决定,我在整理关于leetcode热门题目的算法解题思路笔记,并且会将所有我自己的算法内容进行开源处理,目前这个公众号还是以发框架类文章为主,所以大家要获取技术文档可以联系我加群,我会隔一天把整理的内容发到群里,如果大家自学能力可以的话,跟着群里我发出的文档学习就可以,如果大家学习能力有限也可以报名和我一起学习。
简单介绍一下一些背景哈:
1、每道题包括的内容:leetcode的题目链接、题目描述、解题思路、代码实现、解题技巧tips、本题涉及的api的使用说明。
2、题目是内容包括简单题、中等题和困难题。不会跳过困难题,也不会只讲简单题,题目分布是简单题、中等题为主,难题也会涉及。
3、题目的文档会非常详细,大家可以进leetcode算法交流群和我沟通交流,进群的费用是20元【因为20是我的luck day哈哈哈哈】~
4、我隔天发一次,时间可能不固定,一般都是上午发出来,每次都会包含原来的过往题目,新进群的小伙伴也不要担心看不到原来的题目。
5、现在在整理c++语言的leetcode刷题,后期还会整理java语言版本和golang语言版本,大家学习的时候主要是要重视思路而非语言本身。但放心,后期都会有不同语言版本的刷题文档。
举一个文档中的题目例子:
题目描述:

解题思路1:

解题思路2:

代码实现1
class Solution {public:string longestPalindrome(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(),false));bool arr[s.size()][s.size()];初始化for(int i=0;i<s.size();i++){dp[i][i]=true;arr[i][i] = true;}int res = 1;int from = 0;for(int i=s.size()-1;i>=0;i--){for(int j=s.size()-1;j>=i;j--){if(i==j){continue;}else if(j-i==1){if(s[i]==s[j]){dp[i][j]=true;if(j-i+1 > res){res = j-i+1;from = i;}}else{arr[i][j]=false;}}else{if(dp[i+1][j-1] && s[i]==s[j]){dp[i][j]=true;if(j-i+1>res){res = j-i+1;from = i;}}}}}return s.substr(from,res);}};
代码实现2:
5、最长回文子串class Solution {public:// 动态规划string longestPalindrome(string s) {int len = s.size();bool arr[len][len];//初始化for(int i=0;i<len;i++){arr[i][i]=true;}int length = 1;int from = 0;for(int i=len-1;i>=0;i--){for(int j=len-1;j>=i;j--){if(j==i){continue;}if(j-i==1){if(s[i]==s[j]){arr[i][j]=true;if(length<2){length = 2;from = i;}}else{arr[i][j]=false;}}else{if(s[i]==s[j] && arr[i+1][j-1]){arr[i][j]=true;if(length < j-i+1){length = j-i+1;from = i;}}else{arr[i][j]=false;}}}}return s.substr(from,length);}};
tips介绍
动态规划特点:
1、推进的方向【遍历】是什么?我们推进的方向需要看我们递推公式的方向。。
2、一般来说动态规划都有初始化的动作,这些初始化作为递推的终点
3、保存之前的递推结果【空间换时间】
api使用
1、字符串的长度 s.size()
2、取字符串s中的下标为i的字符 s[i] // golang
3、二维向量的初始化 vector<vector<bool>> dp(m,vector<bool>(n,false));
4、取字符串中的子串 s.substr(from,len); //s[from , from+len) 左闭右开
现在介绍一下我举办的训练营,有需要的小伙伴可以加我微信报名参加哈,报名参加可以免费进群哈,现在群里有240+个小伙伴,跟着大家一起学习可以进步更快哦~
自我介绍:
我叫梁霖,是一名互联网大厂的搬砖人,本科毕业于南昌大学信息安全专业,研究生毕业于北京理工大学软件工程专业。在2020年初到2021年5月份用c++刷了800道左右的leetcode算法,后来转其他语言便用java语言刷了600道左右的leetcode算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业学习。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,并且通过大量的练习对于具体问题可以进行具体分析,并可以基于问题特点设计底层数据结构。
研究生毕业时拿到了美团,字节跳动,海康威视,中国农业银行和中金财富等大厂offer,自己在2020年6月份到9月份辅导了某同学考研,在2022年1月份在北京易研教育担任该机构的考研计算机辅导老师,一方面带领同学考研一方面带领学生学习数据结构和算法,具有一定的教学经验。
个人技术栈开源公众号:merlinsea,可以通过公众号加我微信然后和加入leetcode算法群,里面有很多大厂同学和200多位对算法有追求的小伙伴,加入微信群,想放弃算法都难,需要强调的是只需要20元就可以加入leetcode算法群,加我的个人微信merlinssea就可以拉你进群啦,快点加入吧,和我们一起加油,一起组队学算法~
C++语言版本的算法总结:

java语言版本的算法总结:

联系方式:
关注微信公众号merlinsea,然后添加我的个人微信merlinssea,只需要【20元】就可以加入别放弃leetcode算法群,强调的是加入leetcode算法群是20元,群里面的算法资料可以获取哈,并且每一天我会发包含之前所有题目的算法文档。
适合人群:
1、有数据结构基础和c++基础或者java基础的同学
2、想深入学习数据结构但由于刚开始不知道怎么入手的同学
3、有恒心有毅力希望进入互联网大厂【比如百度,阿里,腾讯,字节,美团】的同学
不适合人群:
1、不适合那些没有编程语言基础(c++语言或者java语言)。
2、不适合那些没有一点数据结构基础的同学【这些同学可以先参加,我会给出一些建议先学完数据结构再参加也可以,数据结构很快就可以学完,主要是训练刷题,不刷题看再多的数据结构书籍都无法真正理解数据结构的精华】
3、不适合那些三天打鱼两天晒网的同学,本次训练营是给同学一个起步助推的作用,减少大家从0到1的摸索时间。
如果大家想跟着我带着你学习
训练营会涵盖各种类型链表,数组,字符串,树,图,并查集,递归,动态规划等问题,不会涉及的问题是典型的数学思维求解的问题,挑选的问题都是典型的数据结构书中知识点的延伸和大厂高频考题。为何不选择数学思维求解的问题?主要是因为这些思维对于开发的帮助意义并不是特别强,我自己刷了那么多题,我感觉数学思维求解有时候需要灵光一现才能做出来,具有一定的偶然性,我希望给大家的是夯实基础,可以把书本中数据结构知识从理论走向实践。
以下是可以选择的课程安排:
25课时组团优惠版【系统班】:
训练营分为【java语言版本】和【c++语言版本】和【golang语言版本】,java语言版本则每次都是用java语言刷题,c++语言版本则每次都是用c++语言刷题,golang语言版本则每次都是用golang语言刷题,参加训练营的时候需要告诉我你擅长的语言哈。
单人训练营: 1200元/ 人/期[25课时]
双人训练营: 1000 元/ 人/期[25课时]
三人组队训练营:900元/人/期[25课时]
四人组队训练营:750元/人/期[25课时]
注:1课时=60分钟
如果同学希望的是一对一训练,那么我推荐单人训练营,单人训练营可以把所有精力都放在你一个同学身上,更加具有针对性。如果同学有自己的好哥们,而且平时就是你们两作为搭档的话我推荐参加双人训练营,相比单人训练营会每个人都便宜200元。三人组队训练营我强烈推荐参加,相当于每个人每节课【1小时】只需要36元。四人组队训练营适合四个人有共同追求的小伙伴,相当于每个人每节课【1小时】只需要30元。
12课时组团优惠【体验班】:
训练营分为【java语言版本】和【c++语言版本】和【golang语言版本】,java语言版本则每次都是用java语言刷题,c++语言版本则每次都是用c++语言刷题,golang语言版本则每次都是用golang语言刷题,参加训练营的时候需要告诉我你擅长的语言哈。
单人训练营: 620元/ 人/期[12课时]
双人训练营: 550 元/ 人/期[12课时]
三人组队训练营:480元/人/期[12课时]
四人组队训练营:410元/人/期[12课时]
2课时组团优惠【尝鲜班】:
训练营分为【java语言版本】和【c++语言版本】和【golang语言版本】,java语言版本则每次都是用java语言刷题,c++语言版本则每次都是用c++语言刷题,golang语言版本则每次都是用golang语言刷题,参加训练营的时候需要告诉我你擅长的语言哈。
单人体验版训练营:120元/ 人/期[2课时]
双人体验版训练营:100 元/ 人/期[2课时]
三人及三人以上组队体验版训练营:80元/人/期[2课时]
授课时间:
训练营会分配一个固定的时间进行刷题,一般都是上午八点半到九点半,一旦定下时间就是每周的这个时间刷题,可以偶尔调整,但基本都是这个时间哈,可以小组讨论,也可以根据每个训练营的同学的时间自己规划。具体时间规划会和大家商量,尽量满足大家的需求。
讲课的方式:
腾讯会议共享屏幕的方式刷leetcode,我手把手带你刷leetcode,同时在刷题的过程中我会一步一步带你思考问题,而不是只给最终的结果而没有过程。最后我会给出本节课的文档和资料。
训练营优势:
1、腾讯会议共享屏幕现场带大家刷题,会把自己的解题思路用流程图的形式写出来进行讲解,同学们不懂的地方可以进行现场交流解决,对比市面上的视频我们更注重过程。
2、针对使用不同语言的同学,主要指c++或者java或者golang语言。同学可以根据最近擅长的语言进入相应的语言版本训练营。
3、c++语言刷题营是使用c++语言进行刷题,在这个过程中会详细带领大家在刷题过程中掌握指针和引用的使用场景。
4、小班刷题,每个训练营至多只有4个人参与,控制问题数量,方便指导。
5、组队学习可以降低个人成本,一期训练营相当于大家一顿午饭的费用,但投入肯定是值得的,我自己学习的过程中就投入来上万元参加各种IT沙龙向前辈请教才有了今天的回报,同时组队还可以营造良好的学习进步氛围,大家可以一起讨论,不懂的问题可以发在群里并艾特我进行点评。
6、很多刚刚学习的小伙伴可能苦于无人带你刷题,不具备形象化具体化的代码思维,对于代码无法理解,需要一个经验丰富的前辈带领你起步。
7、帮助同学们,尤其是大一、大二、大三的同学们真正实习从数据结构的书本知识真正内化为实践经验。




