leetcode
yuanliang861
西西弗斯式永不停歇
展开
-
Leetcode 67. 二进制求和 C++
题目描述方法一暴力法class Solution {public: string addBinary(string a, string b) { string res; if(a.empty() && b.empty()) return res; if(a.empty() || b.empty()) return a...原创 2018-12-08 18:55:03 · 896 阅读 · 0 评论 -
Leetcode46 全排列 C++
题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解答class Solution {public: vector<vector<int>> permute(vector&l...原创 2019-03-31 20:13:44 · 408 阅读 · 0 评论 -
Leetcode30 串联所有单词的子串 C++
题目描述给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入: s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从...原创 2019-04-07 09:38:53 · 428 阅读 · 0 评论 -
Leetcode 56. 合并区间 C++
题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2019-04-08 09:50:37 · 947 阅读 · 0 评论 -
Leetcode 77. 组合 C++回溯法
题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]思路使用回溯的方法,如果满足条件就将其保存。否则就返回到上一步接着进行。另外两个用回溯法的题Leetcode 39组合总和 C++ 回溯法...原创 2019-04-08 10:39:04 · 516 阅读 · 0 评论 -
Leetcode 80. 删除排序数组中的重复项 II C++
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度...原创 2019-04-08 11:28:13 · 111 阅读 · 0 评论 -
Leetcode 64. 最小路径和 C++
题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解答思路:使用动态规划。是一道很简单的动态规划题。每一个格子,只可以由它的左边元素到达。或...原创 2019-04-08 13:58:03 · 708 阅读 · 0 评论 -
Leetcode 78. 子集 C++ 回溯法
题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]思路使用回溯法。解答class Solution {public: ve...原创 2019-04-08 14:12:50 · 489 阅读 · 0 评论 -
leetcode 16. 最接近的三数之和 C++
题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路先排序。然后循环历遍一次所有...原创 2019-04-02 17:04:16 · 408 阅读 · 0 评论 -
Leetcode 90. 子集 II C++回溯法
题目描述给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]解答使用回溯法,为了去掉重复需要先排序,并且使用set容器。class Solution {public: vect...原创 2019-04-08 15:40:14 · 265 阅读 · 0 评论 -
LeetCode 40 组合总和 C++ 回溯法
题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:...原创 2019-04-04 10:28:23 · 2606 阅读 · 0 评论 -
Leetcode 39组合总和 C++ 回溯法
题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:...原创 2019-04-04 09:56:10 · 785 阅读 · 0 评论 -
Leetcode 53. 最大子序和 C++
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。答案剑指offer 42从开始加起,如果加到某一项,当前的和...原创 2019-03-19 10:55:51 · 321 阅读 · 0 评论 -
Leetcode 537. 复数乘法 C++
思路先获取两个复数的实部和虚部,分别为aa,ab,ba,bb.然后乘起来,实部为(aa*ba-ab*bb),虚部为(aa*bb+ab*ba)i解答class Solution {public: string complexNumberMultiply(string a, string b) { string res; if(a.empty() ||...原创 2018-12-08 19:34:10 · 586 阅读 · 0 评论 -
Leetcode 32. 最长有效括号 C++
题目描述思路注意:这个题要找的是最长的有效括号的长度,指的是连续存在的最长子串。不是指里面的有效括号的个数。做法本题的方法有些特殊,我自己一开始也没有想到。本题很自然可以想到通过一个堆栈来控制实现。但是本题存入堆栈的不是字符(左右小括号)。本题通过维护一个记录各个括号位置的堆栈来实现,stack<int>,另外,通过一个变量start记录有效括号的起始位置。(1)如果是左...原创 2018-12-06 09:42:34 · 1665 阅读 · 0 评论 -
Leetcode 12 13 整数转罗马数字 罗马数字转整数
解答罗马数转整数class Solution {public: string intToRoman(int num) { string res; if(num&gt;3999 || num&lt;1) return res; vector&lt;int&gt; data1{1000, 900, 500, 400, 100, 90,...原创 2018-12-04 09:01:59 · 216 阅读 · 0 评论 -
Leetcode 151. 翻转字符串里的单词 C++
题目描述下面的两种方法第一种较为笨拙,程序复杂但是容易想到。第二种方法实现简单,也方便。参考:http://www.cnblogs.com/grandyang/p/4606676.html方法一方法一比较笨,对字符串处理,将每个单词存入到一个vector<string>中,然后对这个vector反转,再将其连成一个字符串。class Solution {public: ...原创 2018-12-07 09:45:30 · 1759 阅读 · 0 评论 -
Leetcode 71. 简化路径 C++
题目描述思路对于这道题目,我们需要知道每一级路径是什么样的(即两个'/'符号之间的内容)。如果是'.',表示当前目录,这一级目录实际上什么用处也没有,需要排除。如果是'..'表示上一级目录,那么就需要向上返回一级。如果两个'/'连在一起,也是多余的,需要去掉。另外就是将路径最后面的'/'去掉。具体做法:通过双指针(快慢指针)来做。两个位置变量i,j,通过一个while循环来实...原创 2018-12-11 16:38:44 · 717 阅读 · 0 评论 -
Leetcode 187. 重复的DNA序列 C++
题目描述所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。示例:输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出: ["AAAAACCCCC", "CCC...原创 2018-12-11 22:05:25 · 495 阅读 · 0 评论 -
Leetcode 54. 螺旋矩阵 C++ 剑指offer 顺时针打印矩阵
两处的答案是一样的。题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]...原创 2019-01-23 20:12:29 · 1265 阅读 · 0 评论 -
Leetcode 82. 删除排序链表中的重复元素 II C++
题目描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3解答/** * Definition for singly-linke...原创 2019-03-12 09:05:46 · 271 阅读 · 0 评论 -
Leetcode 328. 奇偶链表 C++
题目描述给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...原创 2019-03-12 09:53:34 · 444 阅读 · 0 评论 -
Leetcode 287. 寻找重复数 C++
题目描述给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O...原创 2019-04-08 16:10:03 · 348 阅读 · 0 评论 -
Leetcode15. 三数之和 C++
题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路先对数组排序...原创 2019-04-12 10:06:46 · 878 阅读 · 1 评论 -
Leetcode 79. 单词搜索 C++ (深度优先搜索 &&回溯)
题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回...原创 2019-04-24 08:52:41 · 532 阅读 · 0 评论 -
Leetcode 80. 删除排序数组中的重复项 II C++
题目说明给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度...原创 2019-04-24 10:07:21 · 149 阅读 · 0 评论 -
Leetcode 621. 任务调度器 C++
题目描述给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。...原创 2019-04-24 10:30:19 · 865 阅读 · 0 评论 -
Leetcode 848. 字母移位 C++
题目描述有一个由小写字母组成的字符串 S,和一个整数数组 shifts。我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, ‘z’ 将会变成 ‘a’)。例如·,shift(‘a’) = ‘b’, shift(‘t’) = ‘u’,, 以及 shift(‘z’) = ‘a’。对于每个 shifts[i] = x , 我们会将 S 中的前 i+1 个字母移位 x 次。返回将所...原创 2019-04-24 11:08:29 · 786 阅读 · 0 评论 -
Leetcode 611. 有效三角形的个数 C++
题目描述给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。解答一、暴力法先排序,然后列举所有可能。因为是排序的,所以如果当第一次出现第...原创 2019-04-20 15:03:40 · 1609 阅读 · 0 评论 -
Leetcoe 200. 岛屿的个数 C++ 深度优先搜索
题目描述给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3解答本题思路和Leetcode 79. 单...原创 2019-04-25 08:45:08 · 594 阅读 · 0 评论 -
Leetcode 233. 数字1的个数 C++
题目描述给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。示例:输入: 13输出: 6解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。思路参考:https://blog.csdn.net/xudli/article/details/46798619解答class Solution {public: int countD...原创 2019-04-25 10:54:31 · 1163 阅读 · 1 评论 -
130. 被围绕的区域
题目描述给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为...原创 2019-04-30 08:28:16 · 215 阅读 · 0 评论 -
Leetcode 92. 反转链表
题目描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解答/** * Definition for singly-linked list. * ...原创 2019-08-13 17:36:35 · 94 阅读 · 0 评论 -
Leetcode 204. 计数质数 C++ 很经典
题目描述统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解答这道题用暴力法会超时,哪怕是在循环控制上做了一定优化。方法:排除掉数组中的非质数。2是质数,但是明显2的倍数不再是质数;4被包含在2的情况中;5是质数,但是5的倍数不是质数… … …而且非质数的倍数不用处理,因为显然...原创 2019-04-23 20:15:23 · 615 阅读 · 0 评论 -
Leetcode 279. 完全平方数 C++
题目描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.解答使用动态规划的思路来做。这种方法和”用最少硬币找零“是相同的。Leetcode 32...原创 2019-04-23 15:54:32 · 1062 阅读 · 0 评论 -
Leetcode 169. 229. 求众数 C++摩尔投票法
题目描述Leetcode 169 求众数给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。示例 1:输入: [3,2,3]输出: [3]示例 2:输入: [1,1,1,3,3,2,2,2]输出: [1,2]思路使用摩尔投票法,可以做到时间复杂读O(n),空间复杂度O(1)。使用摩尔投...原创 2019-04-18 16:30:56 · 470 阅读 · 0 评论 -
Leetcode152. 乘积最大子序列 C++
题目描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。思路方法来源于讨论区。这种方法实在是秒!!!时间复杂度O(N)O(N)O(N)...原创 2019-04-12 10:45:42 · 334 阅读 · 0 评论 -
Leecode 228. 汇总区间 C++
题目描述给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。示例 1:输入: [0,1,2,4,5,7]输出: ["0->2","4->5","7"]解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。示例 2:输入: [0,2,3,4,6,8,9]输出: ["0","2->4","6","8->9"]解释: 2,3,4 可组...原创 2019-04-14 16:23:56 · 179 阅读 · 0 评论 -
Leetcode 539. 最小时间差 C++
题目描述给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。示例 1:输入: [“23:59”,“00:00”]输出: 1备注:列表中时间数在 2~20000 之间。每个时间取值在 00:00~23:59 之间。解答这里需要注意一个问题,那就是两个时间点的时间差有两中可能。一种中从较小的时间点正向 到 较大的时间点之间的差值。另一种是...原创 2019-04-26 09:54:07 · 678 阅读 · 0 评论 -
Leetcode 442. 数组中重复的数据 C++ 重要
题目描述给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]解答这种做法来自评论区。时间复杂度O(N)O(N)O(N),空间复杂度O(1)O(1)O(1)。做法:...原创 2019-04-14 16:45:56 · 272 阅读 · 0 评论