# 1.这是什么?
  这个代码库是我练习leetcode时写的代码的一个集合。今天是2018年4月18日 14:13:55,我大概做了剑指offer上所有的题,应该有66道题目和他们的变体,一共80道题左右。后来leecode又做了一些题目,目前为止一共也做了66道,从正式开始刷题到现在一共大概140道。刚开始做这些题目的时候,抓耳挠腮,没有思路。每做一道题都感觉这是一道新题,需要有全新的解法,每次都需要查阅被人的方法和代码。这个过程也很有一番变化。一开始看别人的方法,看半天看不懂;后来看别人的代码,看了一会儿看出了思路;现在呢,可能可以独立解答题目了。在这个过程当中,从一开始的不会做,到现在的居然有了一些心得体会,我觉得这个变化也很奇妙。在做完每道题之后,我都会写一些这道题的技巧和感悟。但是现在感觉有了一些通用的思路和想法,所以就整理到这里,方便自己记录心得,更希望以后能做到温故而知新。下面的思路目前看来可能很散乱,有时间有需要的话,我还会再次整理。
我不会的程序基本都参考这个博客:http://www.cnblogs.com/grandyang/
# 2.一些感悟
+ 首先要熟悉stl提供的容器和函数。《c++primer》上说,这些方法和你自己写的经过精心优化的方法一样好,而且往往更好。所以有好东西我们就“拿来主义”,直接使用。如何熟练呢,我想就是多学多写吧。
+ 编程结束,要学会测试自己的程序。需要的考察的大概有三点:基本功能、无效输入、边界输入。
+ 遇到需要花式打印的东西,一般都可以这么做:把打印分解为循环的步骤,然后在每个步骤里面找规律
+ 如果给出了一个有序或者基本有序的数组、矩阵或者存储数据的东西,然后在里面寻找什么,那么基本上都可以用二分查找法来进行求解。
+ 那些“重复”或者“不重复”的问题,或者有时间要求的题目,基本都需要哈希表的出现。哈希表的构造也有技巧。
+ 首先unordered_map是一个c++定义好的哈希表。
+ 有时候不需要这么麻烦,比如只有字符a-z的时候,我们直接用一个有26个元素的int型数组就能替代,一个字符变量a对应的数组下标就是a-‘a’。
+ 如果很多字符的话,就用一个包含256个元素的int型替代,因为字符(不包括汉字)都是8位无符号整型,所以对应的数字就是0-255。
+ 有的时候哈希表可能对应多个值,我们可以用unordered_map来定义哈希表,然后对应的value为vector形式,这样有新的对应value就可以直接push_back。
+ 如果一个题目需要节省时间,那么一般都需要我们使用一些辅助内存,用空间换时间,这个辅助内存往往很可能是哈希表。而有的时候可能我们只能使用常数项的辅助空间,这个时候:我们可以利用题目给出的数组本身,可能需要一边在数组里查找数据,一方面把查找的结果存储到这个数组里面的特定位置。
+ 如果一个问题,很明显可以用递归来计算,而每次递归都可以把总问题分解为很明显的子问题,那么递归往往会很花时间,我们需要用动态规划来求解。
+ 如果有的问题规模为n,我们需要遍历数据,而这种遍历的for循环层数可能是随着n的不同而不同的,那么我们往往需要使用递归的方法,每次递归遍历一下,递归的for循环就不需要我们一层一层手写了。
+ 在用递归遍历所有可能的结果时,如果我们已经知道什么情况下需要递归,什么情况下不需要递归,即我们知道递归的结果一定是错误的时候,我们可以在递归的入口加入一些判定条件,没必要递归就不进入递归。那么此时的递归,就变成了回溯法。
+ 回溯法是一种非常好用,非常重要的方法。简而言之,回溯法就是用递归穷举所有可能的情况,但是和穷举不同的是,回溯法知道自己什么时候进入递归函数,什么时候不需要进入递归函数
+ 遇到树的问题,一般情况下也许都需要使用递归。而我们只需要考虑三个部分,根节点,左子树,右子树。
+ 递归做题如果超时,就需要把递归分解为循环
+ 有些循环的判断条件应该放到循环体里面,因为我们可能需要程序先做一些循环体里的操作,然后再跳出
+ 做链表或者字符串的题目时,在链表前面加一个头指针,在字符串后面加一个结束的标识符,程序可以清爽很多。
+ 有些题也许需要智商。自己不够聪明,天生的,怪不得自己什么...
to be continued...
没有合适的资源?快使用搜索试试~ 我知道了~
leetcode算法题主函数如何写-leetcode:leetcode练习
共74个文件
cpp:73个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 8 下载量 170 浏览量
2021-06-30
05:12:39
上传
评论
收藏 54KB ZIP 举报
温馨提示
leetcode算法题主函数如何写 1.这是什么? 这个代码库是我练习leetcode时写的代码的一个集合。今天是2018年4月18日 14:13:55,我大概做了剑指offer上所有的题,应该有66道题目和他们的变体,一共80道题左右。后来leecode又做了一些题目,目前为止一共也做了66道,从正式开始刷题到现在一共大概140道。刚开始做这些题目的时候,抓耳挠腮,没有思路。每做一道题都感觉这是一道新题,需要有全新的解法,每次都需要查阅被人的方法和代码。这个过程也很有一番变化。一开始看别人的方法,看半天看不懂;后来看别人的代码,看了一会儿看出了思路;现在呢,可能可以独立解答题目了。在这个过程当中,从一开始的不会做,到现在的居然有了一些心得体会,我觉得这个变化也很奇妙。在做完每道题之后,我都会写一些这道题的技巧和感悟。但是现在感觉有了一些通用的思路和想法,所以就整理到这里,方便自己记录心得,更希望以后能做到温故而知新。下面的思路目前看来可能很散乱,有时间有需要的话,我还会再次整理。 我不会的程序基本都参考这个博客: 2.一些感悟 首先要熟悉stl提供的容器和函数。《c++prime
资源推荐
资源详情
资源评论
收起资源包目录
leetcode-master.zip (74个子文件)
leetcode-master
100-Same_Tree.cpp 1KB
091-Decode_Ways.cpp 855B
010-Regular_Expression_Matching.cpp 3KB
014-Longest_Common_Prefix.cpp 374B
287-Find_the_Duplicate_Number.cpp 2KB
374-Guess_Number_Higher_or_Lower.cpp 606B
008-String_to_Integer(atoi).cpp 804B
033-Search_in_Rotated_Sorted_Array.cpp 1013B
022-Generate_Parentheses.cpp 2KB
035-Search_Insert_Position.cpp 409B
062-Unique_Paths.cpp 872B
042-Trapping_Rain_Water.cpp 1KB
048-Rotate_Image.cpp 590B
295-Find_Median_from_Data_Stream.cpp 1KB
007-reverse_integer.cpp 308B
038-Count_and_Say.cpp 588B
005-Longest_Palindromic_Substring.cpp 817B
067-Add_Binary.cpp 582B
012-Integer_to_Roman.cpp 556B
026.-Remove_Duplicates_from_Sorted_Array.cpp 424B
075-Sort_Colors.cpp 437B
020-Valid_Parentheses.cpp 493B
011-Container_With_Most_Water.cpp 552B
079-Word_Search.cpp 1KB
013-Roman_to_Integer.cpp 466B
002-Add_Two_Numbers.cpp 753B
009-Palindrome_Number.cpp 384B
263-Ugly_Number.cpp 377B
049-Group_Anagrams.cpp 1024B
029-Divide_Two_Integers.cpp 1KB
028-Implement_strStr().cpp 440B
017-Letter_Combinations_of_a_Phone_Number.cpp 766B
058-Length_of_Last_Word.cpp 334B
145-Binary_Tree_Postorder_Traversal.cpp 994B
034-Search_for_a_Range.cpp 1KB
077-Combinations.cpp 716B
088.Merge_Sorted_Array.cpp 980B
046-Permutations.cpp 1KB
078-Subsets.cpp 711B
055-Jump_Game.cpp 476B
122-Best_Time_to_Buy_and_Sell_StockII.cpp 572B
268-Missing_Number.cpp 761B
003-Longest_Substring_Without_Repeating_Characters.cpp 2KB
044-Wildcard_Matching.cpp 1KB
278-First_Bad_Version.cpp 1KB
041-First_Missing_Positive.cpp 1KB
016-3Sum_Closest.cpp 841B
006-ZigZag_Conversion.cpp 903B
066-Plus_One.cpp 454B
053-Maximum_Subarray.cpp 1KB
070-Climbing_Stairs.cpp 848B
076-Minimum_Window_Substring.cpp 2KB
233-Number_of_Digit_One.cpp 1KB
027-Remove_Element.cpp 383B
README.md 5KB
069-Sqrt(x).cpp 171B
023-Merge_k_Sorted_Lists.cpp 798B
054-Spiral_Matrix.cpp 1005B
083-Remove_Duplicates_from_Sorted_List.cpp 570B
050-Pow(x, n).cpp 1KB
001-two_sum.cpp 594B
101-Symmetric_Tree.cpp 561B
036-Valid_Sudoku.cpp 802B
021-Merge_Two_Sorted_Lists.cpp 651B
019-Remove_Nth_Node_From_End_of_List.cpp 554B
297-Serialize_and_Deserialize_Binary_Tree.cpp 986B
098-Validate_Binary_Search_Tree.cpp 496B
024-Swap_Nodes_in_Pairs.cpp 423B
264-Ugly_NumberII.cpp 2KB
094-Binary_Tree_Inorder_Traversal.cpp 3KB
015-3Sum.cpp 1KB
004-Median_of_Two_Sorted_Arrays.cpp 1KB
056-Merge_Intervals.cpp 2KB
480-Sliding_Window_Median.cpp 2KB
共 74 条
- 1
资源评论
- zzkq111332023-03-15简直是宝藏资源,实用价值很高,支持!
- weixin_507313792023-10-05怎么能有这么好的资源!只能用感激涕零来形容TAT...
weixin_38686924
- 粉丝: 14
- 资源: 956
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 老照片修复教程(带资料),再也不用去照相馆修复了!-教程网盘链接提取码下载 .txt
- STM32单片机FPGA毕设电路原理论文报告一种建立单片机应用系统菜单的新方法
- 诊所医院超常规运营管理思维,课程+直播+社群+连麦+实操-教程网盘链接提取码下载 .txt
- STM32单片机FPGA毕设电路原理论文报告一种简单方法实现基于STC89C52RC单片机的频率计
- STM32单片机FPGA毕设电路原理论文报告一种基于低功耗单片机的抗干扰电源
- Linux知识体系复习
- STM32单片机FPGA毕设电路原理论文报告一种基于等效采样技术的高速数据采集系统
- 东华深度学习课后习题全部
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机系统的无线遥控技术
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机及CPLD测试平台的设计与实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功