LeetCode题解 C/C++版

所需积分/C币:42 2015-11-22 20:37:03 1.36MB PDF

最新版本的leetcode题解,包含目前leetcode网站上几乎所有题目的代码解析,对刷算法题库有很大帮助。
目录 3.4 Add binary 60 5.1.5 Binary Tree Level Or- 3.5 Longest Palindromic Substring. 61 der traversal il 93 3.6 Regular Expression Matching 65 5.1.6 Binary Tree Zigzag 3.7 Wildcard Matching Level Order traversal. 95 3.8 Longest Common Prefix 68 5.1.7 Recover Binary Search 3. 9 Valid Number 69 Tree 97 3.10 Integer to roman 71 5.1. 8 Same tree 3. 11 Roman to Integer 2乃 5.1.9 Symmetric Tree 100 3.12 Count and Say 5.1.10 Balanced Binary Tree.. 101 3. 13 Anagrams ..74 5.1.11 Flatten Binary Tree to 3. 14 Simplify Path Linked List 102 3. 15 Length of Last Word 76 5.1. 12 Populating Next Right Pointers in each node ii 104 第4章栈和队列 7852二叉树的构建 106 4.1栈 78 5.2.1 Construct Binary Tree 4 Valid Parentheses 78 from Preorder and In 4.1.2 Longest valid Paren order traversa 106 theses 7 5.2.2 Construct Binary Tree 4.1.3 Largest Rectangle in from Inorder and pos Histogram 8 torder Traversal 107 4.14 Evaluate reverse pol- 53二叉查找树 108 ish notation 83 5.3. 1 Unique Binary Search 4,2队列 84 Trees 108 5.3.2 Unique Binary Search 第5章树 85 5.1二叉树的遍历 85 5.3.3 Validate Binary Search 5.1.1 Binary Tree Preorder Tree Traversal 85 5.3.4 Convert Sorted array to 5.1.2 Binary Tree Inorder Binary Search Tree Traversal 87 5.3.5 Convert Sorted List to 5.1. 3 Binary Tree Postorder Binary search tree 11 Traversal 89 54二叉树的递归 .114 5. 1. 4 Binary Tree Level Or 5.4.1 Minimum Depth of Bi der traversal )2 nary lree .114 目录 5.4.2 Maximum Depth of Bi 8.32重新实现 next permu nary Tree 115 tation 141 5.4.3 Path Sum 116 833递归 .142 5.4 4 Path Sum il 117 8.4 Permutations li 143 5.4.5 Binary Tree Maximum 8.4.1 next permutation(... 143 Path Su um 118 842重新实现 next permu 5.4.6 Populating Next Right tation 143 Pointers in Each Node. 119 84.3递归 143 5.4.7 Sum Root to Leaf Num 8.5 Combinations 145 bers 21 851递归 145 852迭代 146 第6章排序 122 8.6 Letter Combinations of a phone 6.1 Merge Sorted Array 122 umber 146 6.2 Merge Two Sorted Lists..... 123 86.1递归 147 6.3 Merge k Sorted Lists 123 862迭代 148 6.4 Insertion Sort List 124 第9章广度优先搜索 149 6.5 Sort list 125 9.1 Word Ladder .149 6.6 First Missing Positive 126 9.2 Word Ladder il 151 6.7 Sort Colors 127 9. 3 Surrounded regions 153 第7章查找 94小结 155 130 94.1适用场景 155 7.1 Search for a range 130 942思考的步骤 155 7.2 Search Insert Position .131 94.3代码模板 156 7. 3 Search a 2D Matrix 132 第10章深度优先搜索 161 第8章暴力枚举法 134 10.1 Palindrome Partitioning ..161 8.1 Subsets 134 10.2 Unique Paths 164 8.1.1递归 134 10.2.1深搜 164 8.1.2迭代 136 10.22备忘录法 .164 8.2 Subsets il 137 10.23动规 165 821递归 137 1024数学公式 166 822迭代 .140 10.3 Unique Paths Il 167 8. 3 Permutations 14 10.3.1备忘录法 167 8.3.1 next permutation 141 10.3.2动规 .168 目录 10.4 N-Queens 168 13.4 Maximal rectangle 198 10.5 N-Queens II 171 13.5 Best Time to Buy and Sell Stock 10.6 Restore ip addresses 172 .199 10.7 Combination Sum 173 13.6 Interleaving String 10.8 Combination Sum Il 174 13.7 Scramble String 202 10.9 Generate Parentheses .176 13. 8 Minimum Path Sum 207 10.10 Sudoku solver 177 13.9 Edit Distance 209 10.11 Word Search .179 13. 10 Decode Ways .211 10.12小结 180 13. 11 Distinct Subsequences 212 10.12.1适用场景 180 13. 12 Word Break 213 10.122思考的步骤 180 13 13 Word Break il 215 10.12.3代码模板 182 第14章图 217 10.12.4深拽与回溯法的区别.183 14. 1 Clone Graph 217 10.12.5深搜与递归的区别..183 第15章细节实现题 220 第11章分治法 184 15.1 Reverse Integer 220 1.1 Pow(x, n) .184 15.2 Palindrome Number .221 11. 2 Sqrt(x) 185 15.3 Insert Interval 222 第12章贪心法 186 15.4 Merge Intervals 223 12.1 Jump game 186 15.5 Minimum Window Substring.. 224 12.2 Jump game Il 187 15.6 Multiply Strings 226 12.3 Best Time to buy and sell stock 189 15.7 Substring with Concatenation 12. 4 Best Time to buy and sell stock l190 of all words 12. 5 Longest Substring Without re 15.8 Pascal,s Triangle 230 peating Characters 19 15.9 Pascals Triangle Il 231 12.6 Container With Most Water.. 192 15.10 Spiral Matrix 232 15.11 Spiral matrix II 233 第13章动态规划 194 15.12 ZigZag Conversion 235 13. 1 Triangle 194 15.13 Divide Two Integers 236 13.2 Maximum Subarray 195 15. 14 Text Justification 237 13.3 Palindrome Partitioning II 197 15.15 Max Points on a line 239 目录 第1章 编程技巧 在判断两个浮点数a和b是否相等时,不要用a=-b,应该判断二者之差的绝对值 fabs(a-b)是否小于某个阀值,例如1e-9。 判断一个整数是否是为奇数,用x%2!=0,不要用x%2==1,因为x可能是 负数。 用char的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到 char可能是负数。有的人考虑到了,先强制转型为 unsigned int再用作下标,这仍然 是错的。正确的做法是,先强制转型为 unsigned char,再用作下标。这涉及C++整型 提升的规则,就不详述了。 以下是关于STL使用技巧的,很多条款来自《 EffectiⅤ ve StL》这本书。 vector和 string优先于动态分配的数组 首先,在性能上,由于 vector能够保证连续内存,因此一旦分配了后,它的性能跟 原始数组相当 其次,如果用new,意味着你要确保后面进行了 delete,旦忘记了,就会出现BUG, 且这样需要都写一行 delete,代码不够短 再次,声明多维数组的话,只能一个一个new,例如: int** ary = new int*[row_num]; for(int i=0: i< row num; ++1) ary [i] new int [col_num] 用 vector的话一行代码搞定, vector<vector<int>>ary(row_num, vector<int>(col_num, 0)) 使用 reserve来避免不必要的重新分配 第2章 线性表 这类题目考察线性表的操作,例如,数组,单链表,双向链表等。 21数组 2.1.1 Remove Duplicates from Sorted array 描述 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length Do not allocate extra space for another array, you must do this in place with constant memory For example, Given input array A =[1, 1, 2 Your function should return length=2, and a is now [1, 2] 分析 无 代码1 / LeetCode, Remove Duplicates from Sorted Array /时间复杂度0(n),空间复杂度0(1) class Solution t ublic int removeDuplicates(int A[], int n)t lf (n==o return o int index =0: for (int i =1:i <n: i++i if (Alindex ! alid A[++index]= Ali return index 1 2.1数组 代码2 // Leet Code, Remove Duplicates from Sorted Array //使用STL,时间复杂度0(n),空间复杂度0(1) class Solution i public int removeDuplicates(int A[, int n)t return distance(A, unique(A, A n)) 代码3 / LeetCode, Remove Duplicates from Sorted Array /使用STL,时间复杂度0(n),空间复杂度0(1) lass Solution f ublic int removeDuplicates (int A[], int n)t return removeDuplicates(A, A +n, A)-A; template<typename InIt, typename outit> OutIt removeDuplicates(InIt first, InIt last, OutIt output)t hile (first last)i *output++ = *first first upper_bound(first, last, *first return output 相关题目 Remove duplicates from Sorted Array Il,见§2.1.2 2.1.2 Remove Duplicates from Sorted Array II 描述 Follow up for"Remove Duplicates " What if duplicates are allowed at most twice? For example, Given sorted array a =[1, 1, 1, 2, 2, 3] Your function should return length=5, and A is now [1, 1, 2, 2, 3 分析 加一个变量记录一下元素出现的次数即可。这题因为是已经排序的数组,所以一个变量即可解 决。如果是没有排序的数组,则需要引入一个 hashmap来记录出现次数 4 第2章线性表 代码1 // Leet Code, Remove Duplicates from Sorted Array II /时间复杂度0(n),空间复杂度0(1) //qauthorhex108(https://github.com/hex108) class Solution t ublic int removeDuplicates (int A[], int n)t lf (n <=2 return n int index =2 for (int i=2: i n: 1++)i f (all] ! Alindex -2]) A Lindex++]= Ali] return index; 代码2 下面是一个更简洁的版本。上面的代码略长,不过扩展性好一些,例如将 occur<2改为 ocur<3,就变成了允许重复最多3次。 //LeetCode, Remove Duplicates from Sorted Array II //@author虞航仲(http://weibo.com/u/1666779725) //时间复杂度0(n),空间复杂度0(1) class Solution i public int removeDuplicates(int A[, int n)t mt index = o for (int if(i>0&&i< 1&&A[i]==A[i-1]&&A[i]==A[i+1]) continue A lindex++]=Ali return index; 相关题目 Remove Duplicates from Sorted Array,见§2.1.1 2.1.3 Search in Rotated Sorted Array 描述 Suppose a sorted array is rotated at some pivot unknown to you beforehand

...展开详情
试读 127P LeetCode题解 C/C++版

评论 下载该资源后可以进行评论 2

Qiqi_Fu 还可以,感觉更详细些会更好。
2017-05-25
回复
qinlaodescv 很好的题解
2016-12-21
回复
img
kusya

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐
    LeetCode题解 C/C++版 42积分/C币 立即下载
    1/127
    LeetCode题解 C/C++版第1页
    LeetCode题解 C/C++版第2页
    LeetCode题解 C/C++版第3页
    LeetCode题解 C/C++版第4页
    LeetCode题解 C/C++版第5页
    LeetCode题解 C/C++版第6页
    LeetCode题解 C/C++版第7页
    LeetCode题解 C/C++版第8页
    LeetCode题解 C/C++版第9页
    LeetCode题解 C/C++版第10页
    LeetCode题解 C/C++版第11页
    LeetCode题解 C/C++版第12页
    LeetCode题解 C/C++版第13页
    LeetCode题解 C/C++版第14页
    LeetCode题解 C/C++版第15页
    LeetCode题解 C/C++版第16页
    LeetCode题解 C/C++版第17页
    LeetCode题解 C/C++版第18页
    LeetCode题解 C/C++版第19页
    LeetCode题解 C/C++版第20页

    试读已结束,剩余107页未读...

    42积分/C币 立即下载 >