LeetCode练习题
Allenlzcoder
拒绝拖延症!!!
展开
-
【动态规划】LeetCode 53. Maximum Subarray
LeetCode 53. Maximum Subarray 原题描述(求子序列最大和/最大子串):Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1原创 2017-10-21 17:24:23 · 332 阅读 · 0 评论 -
【数字全排列】LeetCode 31. Next Permutation
LeetCode 31. Next Permutation参考博客:http://www.cnblogs.com/grandyang/p/4428207.html 这是有关数字全排列的一类题。 自己想?自己想是不可能的,这辈子都想不出来~ 只有抄抄别人答案这样子~ 思路: 这道题让我们求下一个排列顺序,有题目中给的例子可以看出来,如果给定数组是降序,则说明是全排列的最后一种情况,则下...转载 2018-05-10 11:52:50 · 257 阅读 · 0 评论 -
【??链表】LeetCode 92. Reverse Linked List II
LeetCode 92. Reverse Linked List IISolution1: 参考网址:http://www.cnblogs.com/grandyang/p/4306611.html 思路: 对于链表的问题,根据以往的经验一般都是要建一个dummy node,连上原链表的头结点,这样的话就算头结点变动了,我们还可以通过dummy->next来获得新链表的头结点。这道题...转载 2018-05-17 09:23:15 · 155 阅读 · 0 评论 -
【数字全排列】LeetCode 60. Permutation Sequence
LeetCode 60. Permutation Sequence博客转载自:http://www.cnblogs.com/grandyang/p/4358678.html 【年轻人要多学习才是啊~】 【自己想?这辈子都想不出这么好的思路。。。只有抄别人的了。。。】 这道题是让求出n个数字的第k个排列组合,由于其特殊性,我们不用将所有的排列组合的情况都求出来,然后返回其第k个,我们可以只...转载 2018-05-10 16:36:22 · 228 阅读 · 0 评论 -
【数字全排列】LeetCode 46. Permutations
LeetCode 46. PermutationsSolution1: 【重点理解记忆方法1 && 方法3】 博客转载自:http://www.cnblogs.com/grandyang/p/4358848.html 这道题是求全排列问题,给的输入数组没有重复项,这跟之前的那道 Combinations 组合项 和类似,解法基本相同,但是不同点在于那道不同的数字顺序只算一...转载 2018-05-10 18:19:18 · 235 阅读 · 0 评论 -
【技巧】LeetCode 86. Partition List
LeetCode 86. Partition ListSolution1: 我的答案,时间复杂度O(n)O(n)O(n),空间复杂度O(n)O(n)O(n)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNo...原创 2018-05-17 11:05:42 · 390 阅读 · 0 评论 -
LeetCode 82. Remove Duplicates from Sorted List II
LeetCode 82. Remove Duplicates from Sorted List IISolution1:我的答案 借鉴LeetCode 86中Solution2的技巧实现的算法,哈哈哈哈,挺好!/** * Definition for singly-linked list. * struct ListNode { * int val; * List...原创 2018-05-17 13:16:24 · 248 阅读 · 0 评论 -
【数字全排列】LeetCode 47. Permutations II
LeetCode 47. Permutations IISolution1:我的答案 和第46题的思路差不多,把vector换成了set就OK啦~~~class Solution {public: vector<vector<int>> permuteUnique(vector<int&原创 2018-05-11 00:12:35 · 621 阅读 · 0 评论 -
【字符串全排列】LeetCode 567. Permutation in String
【字符串全排列】LeetCode 567. Permutation in StringSolution1:【超时,未能AC】 得到s1的所有全排列组合,然后在s2中查找s1的全排列集合 因为超时,未能AC,只是记录一下: 【注意】此题中针对字符串的全排列代码非常之经典!应当牢记!class Solution {public: bool checkInclusion(stri...原创 2018-05-11 10:05:13 · 1274 阅读 · 0 评论 -
LeetCode 36. Valid Sudoku
LeetCode 36. Valid SudokuSolution1:我的答案,比较笨。但是清晰易懂好上手啊~~~class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { //先判断9行、9列是否满足要求 for(int i =...原创 2018-05-11 11:39:35 · 224 阅读 · 0 评论 -
LeetCode 83. Remove Duplicates from Sorted List
LeetCode 83. Remove Duplicates from Sorted ListSolution1:我的答案 思路和82题差不多,还是此算法还是比较好的!/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li...原创 2018-05-18 09:07:07 · 158 阅读 · 0 评论 -
LeetCode 61. Rotate List
LeetCode 61. Rotate ListSolution1:我的答案 注意一点,在处理之前,需要k对链表长度取模,否则时间会超时。 处理链表的思想就是,先串成串,再断开~/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...原创 2018-05-18 12:11:40 · 176 阅读 · 0 评论 -
【重点:DP && 双指针 && 栈】LeetCode 42. Trapping Rain Water
LeetCode 42. Trapping Rain Water本博客转载自:http://www.cnblogs.com/grandyang/p/4402392.html 【自己又不会做,抄的-&amp;gt;_&amp;lt;-……】 Solution1: 我们先来看一种方法,这种方法是基于动态规划Dynamic Programming的,我们维护一个一维的dp数组,这个DP算法需要遍历两遍数组,第...转载 2018-05-12 16:11:26 · 475 阅读 · 0 评论 -
LeetCode 19. Remove Nth Node From End of List
LeetCode 19. Remove Nth Node From End of List Solution1:我的答案 并不算是最优解法。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) :...原创 2018-05-18 19:13:02 · 165 阅读 · 0 评论 -
【重点:BFS】LeetCode 407. Trapping Rain Water II
LeetCode 407. Trapping Rain Water II博客转载自:http://www.cnblogs.com/grandyang/p/5928987.html 【太难了,被智商碾压。。。。】 这道题是之前那道Trapping Rain Water的拓展,由2D变3D了,感觉很叼。但其实解法跟之前的完全不同了,之前那道题由于是二维的,我们可以用双指针来做,而这道三维的,我...转载 2018-05-12 20:45:57 · 678 阅读 · 0 评论 -
【细节处理】LeetCode 66. Plus One
LeetCode 66. Plus One博客转载自:http://www.cnblogs.com/grandyang/p/4079357.html Solution1:class Solution {public: vector<int> plusOne(vector<int>& digits) { int i = digits...转载 2018-05-13 09:56:05 · 189 阅读 · 0 评论 -
【斐波那切数列】LeetCode 70. Climbing Stairs
LeetCode 70. Climbing Stairs这是一道利用斐波那切数列求解的题目。求斐波那切数列有比较经典的4种方法 (1)递归法:复杂度太高 (2)迭代法:时间复杂度为O(n)O(n)O(n),需要注意循环的停止条件 (3)矩阵法:复杂度为O(logn)O(logn)O(logn) (4)公式法:复杂度为O(1)O(1)O(1) 此题利用迭代法做。需要说明的是爬楼梯和标准...原创 2018-05-13 10:31:42 · 355 阅读 · 0 评论 -
【动态规划 && 斐波那切数列】LeetCode 746. Min Cost Climbing Stairs
LeetCode 746. Min Cost Climbing Stairs本博客转载自:http://www.cnblogs.com/grandyang/p/8343874.html 存在无代价的最高层n层(顶层) Solution1: 用动态规划Dynamic Programming来做。这里我们定义一个一维的dp数组,其中dp[i]表示爬到第i层的最小cost,然后我们来想dp[i...转载 2018-05-13 11:18:15 · 242 阅读 · 0 评论 -
【重点】LeetCode 24. Swap Nodes in Pairs
LeetCode 24. Swap Nodes in Pairs参考网址:http://www.cnblogs.com/grandyang/p/4441680.html 此题算是链表中比较考察细节的题目~ Solution1:迭代法 基本的链表操作题,我们可以分别用递归和迭代来实现。对于迭代实现,还是需要建立dummy节点,注意在连接节点的时候,最好画个图,以免把自己搞晕了,参见代码...转载 2018-05-19 15:55:59 · 220 阅读 · 0 评论 -
【格雷码】LeetCode 89. Gray Code
LeetCode 89. Gray CodeSolution1:我的答案 穷举法,比较笨 注意:牢记vector中find()函数的用法class Solution {public: vector&amp;amp;lt;int&amp;amp;gt; grayCode(int n) { vector&amp;amp;lt;int&amp;amp;gt; res; res.push_back(原创 2018-05-14 10:05:08 · 295 阅读 · 0 评论 -
【重点】LeetCode 25. Reverse Nodes in k-Group
LeetCode 25. Reverse Nodes in k-Group博客转载自:http://www.cnblogs.com/grandyang/p/4441324.html Solution1:【重点理解记忆!!!】 代码要好好画几个图才能理解,建议花k = 5,链表长度为7的试一试才能深刻理解~ 此解法和LeetCode24看似差不多,但细节处不一样~ 这道题让我们以每k个为...转载 2018-05-20 16:24:18 · 290 阅读 · 0 评论 -
LeetCode 138. Copy List with Random Pointer
LeetCode 138. Copy List with Random Pointer参考链接:http://www.cnblogs.com/grandyang/p/4261431.html Solution1: 此题同《剑指offer》的第26题,只记住了其一,没记住其二。。。/** * Definition for singly-linked list with a random...转载 2018-05-21 09:30:11 · 176 阅读 · 0 评论 -
LeetCode 141. Linked List Cycle
LeetCode 141. Linked List CycleSolution1: 快慢指针即可/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {...原创 2018-05-21 10:03:56 · 225 阅读 · 0 评论 -
【To Do】LeetCode 142. Linked List Cycle II
LeetCode 142. Linked List Cycle IISolution1:我的答案 这道题多次遇到,牢记此解法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x)...原创 2018-05-21 10:25:21 · 355 阅读 · 0 评论 -
LeetCode 73. Set Matrix Zeroes
LeetCode 73. Set Matrix ZeroesSolution1:我的答案 比较笨,算法时间复杂度是O(mn)O(mn)O(mn),占用额外空间是O(m+n)O(m+n)O(m+n)class Solution {public: void setZeroes(vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;&amp;amp; matrix) {原创 2018-05-14 21:06:06 · 159 阅读 · 0 评论 -
LeetCode 134. Gas Station
LeetCode 134. Gas StationSolution1:我的答案,无数次试错得到的,不成系统,没有思路。。 时间复杂度O(n2)O(n2)O(n^2)class Solution {public: int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { ...原创 2018-05-14 22:48:41 · 188 阅读 · 0 评论 -
【重点】LeetCode 135. Candy
LeetCode 135. Candy博客转载自:http://www.cnblogs.com/grandyang/p/4575026.html 这个题一看就很难。。。但答案真是清新脱俗啊。。。 Solution1: 这道题看起来很难,其实解法并没有那么复杂,当然我也是看了别人的解法才做出来的,先来看看两遍遍历的解法,首先初始化每个人一个糖果,然后这个算法需要遍历两遍,第一遍从左向右遍历...转载 2018-05-15 09:38:39 · 140 阅读 · 0 评论 -
【异或】LeetCode 136. Single Number
LeetCode 136. Single NumberSolution1:我的答案 还好异或的性质没记错,还好,还好class Solution {public: int singleNumber(vector&lt;int&gt;&amp; nums) { if (nums.size() == 1) return nums[0]; ...原创 2018-05-15 09:45:00 · 170 阅读 · 0 评论 -
【异或】LeetCode 137. Single Number II
LeetCode 136. Single Number IISolution1:不会做,抄的 这道题是之前那道 Single Number 单独的数字 的延伸,那道题的解法就比较独特,是利用计算机按位储存数字的特性来做的,这道题就是除了一个单独的数字之外,数组中其他的数字都出现了三次,那么还是要利用位操作 Bit Operation 来解此题。我们可以建立一个32位的数字,来统计每一位上1出...转载 2018-05-15 10:12:55 · 325 阅读 · 0 评论 -
【?异或】LeetCode 260. Single Number III
LeetCode 260. Single Number IIISolution1:抄的答案 这道题其实是很巧妙的利用了Single Number 单独的数字的解法,因为那道解法是可以准确的找出只出现了一次的数字,但前提是其他数字必须出现两次才行。而这题有两个数字都只出现了一次,那么我们如果能想办法把原数组分为两个小数组,不相同的两个数字分别在两个小数组中,这样分别调用Single Numbe...转载 2018-05-15 11:00:36 · 242 阅读 · 0 评论 -
【重点】LeetCode 143. Reorder List
LeetCode 143. Reorder ListSolution1: 参考网址:http://www.cnblogs.com/grandyang/p/4606334.html 这段代码有值得学习的三个点: (1)快慢指针找链表的中间结点 (2)简约的迭代版的翻转链表写法 (3)链表的插入 /** * Definition for singly-linked list. ...转载 2018-05-22 10:31:29 · 235 阅读 · 0 评论 -
【注意】LeetCode 2. Add Two Numbers
LeetCode 2. Add Two Numbers这种沙比提怎么都写不对了??? Solution1:学习这种写法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), n...转载 2018-05-16 10:11:36 · 294 阅读 · 0 评论 -
LeetCode 445. Add Two Numbers II
LeetCode 445. Add Two Numbers IISolution1:我的答案 利用了栈,这样就不用翻转链表了。。。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val...原创 2018-05-16 11:58:26 · 261 阅读 · 0 评论 -
【回文串5 重点+动态规划】LeetCode 132. Palindrome Partitioning II
LeetCode 132. Palindrome Partitioning IISolution1:我的答案1 直接模仿131那道题的DFS解法,找其中size最小的。果不其然,因为超时只能部分AC。代码如下,仅供记录:class Solution {public: int minCut(string s) { vector&amp;amp;amp;amp;amp;amp;amp;amp;lt;string&amp;amp;amp;amp;原创 2018-06-04 11:18:58 · 227 阅读 · 0 评论 -
【To Understand! 回文串6 KMP算法】LeetCode 214. Shortest Palindrome
LeetCode 214. Shortest PalindromeSolution1:最笨的方法。时间复杂度O(n2)O(n2)O(n^2) 竟然能AC,xixixiclass Solution {public: string shortestPalindrome(string s) { //最短的回文串,则对称轴要尽可能往后! if (s.size() &amp;amp;lt...原创 2018-06-05 11:41:24 · 197 阅读 · 0 评论 -
【回文串7】LeetCode 234. Palindrome Linked List
LeetCode 234. Palindrome Linked ListSolution1:我的答案 一遍过,哈哈哈!/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), n...原创 2018-06-05 12:11:17 · 155 阅读 · 0 评论 -
【重点】LeetCode 146. LRU Cache
LeetCode 146. LRU Cache本博客转载自:http://www.cnblogs.com/grandyang/p/4587511.html 这道题让我们实现一个LRU缓存器,LRU是Least Recently Used的简写,就是最近最少使用的意思。那么这个缓存器主要有两个成员函数,get和put,其中get函数是通过输入key来获得value,如果成功获得后,这对(key...转载 2018-05-29 15:11:44 · 192 阅读 · 0 评论 -
【回文串3】LeetCode 125. Valid Palindrome
LeetCode 125. Valid PalindromeSolution1:我的答案复杂度为O(n)O(n)O(n),写法不是很简练啊。class Solution {public: bool isPalindrome(string s) { int n = s.size(); if (n &lt;= 1) return true;...原创 2018-05-29 16:58:04 · 204 阅读 · 0 评论 -
【todo+低频题】LeetCode 10. Regular Expression Matching
LeetCode 10. Regular Expression Matching本博客参考:http://www.cnblogs.com/grandyang/p/4461713.html 详细解析见另一题:【重点】剑指offer——面试题53:正则表达式匹配里面的代码风格是C的,现在把它改成C++风格的代码。在剑指offer53题的代码中,由于代码风格的原因,未考虑p.size() == 1...原创 2018-06-12 16:54:25 · 1172 阅读 · 2 评论 -
【回文串14】LeetCode 680. Valid Palindrome II
LeetCode 680. Valid Palindrome IISolution1:我的答案 复杂度是O(n)O(n)O(n),不算好啊。。 注意:对于c++中string对象常用的insert()和erase()操作,记录如下,摘抄自《C++ Primer (第五版)》P323 操作 说明 s.insert(pos, args) 在pos之前插入args指...原创 2018-05-29 19:01:54 · 210 阅读 · 0 评论