LeetCode
文章平均质量分 52
针对LeetCode题型的分析和学习总结。
叙狼烟
十年苦饮深井冰,一腔热血沸欲倾。
展开
-
<32>——Longest Valid Parentheses
32、Longest Valid Parentheses最长有效括号给定一个仅仅包含'('或 ')'的字符串,找出其中最长有效括号组成的子集的长度。字符串"(()",它的最长有效号符子集是"()",长度为2。另一个例子")()())",它的最长有效括号子集是"()()",长度是4。分析:这道题的难点在于,判断括号有效后,还需要记录括号的有效长度。我们使用原创 2017-09-19 22:34:41 · 386 阅读 · 0 评论 -
<1>——Two Sum
Two Sum 两数之和给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。注意事项你可以假设只有一组答案。样例给出 numbers = [2, 7, 11, 15], target =原创 2017-08-18 22:56:08 · 171 阅读 · 0 评论 -
<2>——Add Two Numbers
2、Add Two Numbers链表求和你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null代码:/** * De原创 2017-08-19 11:47:34 · 147 阅读 · 0 评论 -
<3>—— Longest Substring Without Repeating Characters
3、Longest Substring Without Repeating Characters最长无重复字符的子串给定一个字符串,请找出其中无重复字符的最长子字符串。样例例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为 3。对于,"bbbbb",其无重复字符的最长子字符串为"b",长度为1。代码:原创 2017-08-19 17:15:20 · 173 阅读 · 0 评论 -
<4>—— Median of Two Sorted Arrays
4、 Median of Two Sorted Arrays两个排序数组的中位数两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为O(log (m+n))。样例给出数组A = [1,2,3,4,5,6] B = [2,3,4,5],中位数3.5给出数组A = [1,2,3] B = [4,5],中位数 3原创 2017-08-21 23:00:18 · 152 阅读 · 0 评论 -
<5>—— Longest Palindromic Substring
5、Longest Palindromic Substring最长回文子串给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。样例给出字符串 "abcdzdcab",它的最长回文子串为 "cdzdc"。挑战 O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n)原创 2017-08-30 19:24:05 · 156 阅读 · 0 评论 -
<6>——ZigZag Conversion
六、ZigZag Conversion锯齿变换题目大意:输入一个字符串和int型(锯齿层数)将字符串以锯齿变化重新排序例:“HAIZEIKEJILAOCHUANZHANG",numRows=5通过如下形式转换:ret="HJAAEIUNIKLHZGZIACHNEOA";解析:周期:z=n+(n-2);顶层:每周期第一个元素中间层:j行原创 2017-08-31 19:34:30 · 177 阅读 · 0 评论 -
<7>——Reverse Integer
7、 Reverse Integer反转整数将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。样例给定 x = 123,返回 321给定 x = -123,返回 -321代码:class Solution{public: int reverse(int x) { long y =原创 2017-09-01 22:06:31 · 135 阅读 · 0 评论 -
<8>——String to Integer (atoi)
8、String to Integer (atoi)转换字符串到整数实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。样例"10" =>10"-1" => -1"123123123123原创 2017-09-01 23:02:46 · 217 阅读 · 0 评论 -
<9>—— Palindrome Number
9、 Palindrome Number回文数判断一个正整数是不是回文数。回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。 注意事项给的数一定保证是32位正整数,但是反转之后的数就未必了。样例11, 121, 1, 12321 这些是回文数。23, 32, 1232 这些不是回文数。代码:原创 2017-09-02 22:17:27 · 240 阅读 · 0 评论 -
<10>——Regular Expression Matching
10、Regular Expression Matching正则表达式匹配实现支持'.'和'*'的正则表达式匹配。'.'匹配任意一个字母。'*'匹配零个或者多个前面的元素。匹配应该覆盖整个输入字符串,而不仅仅是一部分。样例isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch原创 2017-09-03 11:44:26 · 174 阅读 · 0 评论 -
<11>——Container With Most Water
11、Container With Most Water装最多水的容器给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。 注意事项容器不可倾斜。原创 2017-09-03 12:49:58 · 137 阅读 · 0 评论 -
<12> ——Integer to Roman
12、 Integer to Roman整数转罗马数字给定一个整数,将其转换成罗马数字。返回的结果要求在1-3999的范围内。罗马数字罗马数字没有0。1~9 I,II,III,IV,V,VI,VII,VIII,IX String X[] = {"","X","XX","XXX","XL","L",原创 2017-09-03 13:29:13 · 202 阅读 · 0 评论 -
<13>—— Roman to Integer
13、Roman to Integer罗马数字转整数给定一个罗马数字,将其转换成整数。返回的结果要求在1到3999的范围内。样例IV -> 4XII -> 12XXI -> 21XCIX -> 99代码:class Solution {public: int romanToInt(string s) { if原创 2017-09-03 20:51:17 · 190 阅读 · 0 评论 -
<14>——Longest Common Prefix
14、Longest Common Prefix最长公共前缀给k个字符串,求出他们的最长公共前缀(LCP)样例在 "ABCD" "ABEF" 和 "ACEF" 中, LCP 为 "A"在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC"代码:class Solution {public: s原创 2017-09-03 21:27:01 · 163 阅读 · 0 评论 -
<15>——3Sum
15、3Sum三数之和给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。 注意事项在三元组(a, b, c),要求a 结果不能包含重复的三元组。样例如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是:(-1, 0, 1)(-1,原创 2017-09-03 22:05:20 · 172 阅读 · 0 评论 -
<16>——3Sum Closest
16、3Sum Closest最接近的三数之和给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。 注意事项只需要返回三元组之和,无需返回三元组本身样例例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元组是 -1 + 2 +原创 2017-09-03 22:50:45 · 169 阅读 · 0 评论 -
<17>——Letter Combinations of a Phone Number
17、Letter Combinations of a Phone Number电话号码的字母组合给定一个数字字符串,返回所有可能的字母组合,可以代表。一个映射的数字字母(就像在电话里按钮)如下所示。 注意事项以上的答案是按照词典编撰顺序进行输出的,不过,在做本题时,你也可以任意选择你喜欢的输出顺序。样例给原创 2017-09-04 13:07:40 · 278 阅读 · 0 评论 -
<18>——4Sum
18、4Sum四数之和给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。 注意事项四元组(a, b, c, d)中,需要满足a 答案中不可以包含重复的四元组。样例例如,对于给定的整数数组S=[1, 0, -1, 0, -2, 2] 和 target=0. 满足要求原创 2017-09-04 17:20:56 · 173 阅读 · 0 评论 -
<19>——Remove Nth Node From End of List
19、Remove Nth Node From End of List删除链表中倒数第n个节点给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项链表中的节点个数大于等于n样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->nu原创 2017-09-04 17:52:53 · 214 阅读 · 0 评论 -
<20>——Valid Parentheses
20、Valid Parentheses有效的括号序列给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列。样例括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号。分析:使用栈,左括号进栈,右括号出栈,原创 2017-09-04 20:57:06 · 164 阅读 · 0 评论 -
<21>—— Merge Two Sorted Lists
21、Merge Two Sorted Lists合并两个排序链表将两个排序链表合并为一个新的排序链表样例给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。代码:/** * Definition for singly-linked list. * struct Li原创 2017-09-04 21:33:08 · 137 阅读 · 0 评论 -
<22>——Generate Parentheses
22、Generate Parentheses生成括号给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。样例给定 n = 3, 可生成的组合如下:"((()))", "(()())", "(())()", "()(())", "()()()"分析:1.排列组合问题,可以使用递归按顺序添加括号,将所有可能列出(回溯法原创 2017-09-04 22:19:34 · 173 阅读 · 0 评论 -
<23>——Merge k Sorted Lists
23、Merge k Sorted Lists合并k个排序链表合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。样例给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null分析:也就是合并2个排序链表的扩展。我的代码:/** * Definition for sing原创 2017-09-05 19:10:58 · 193 阅读 · 0 评论 -
<24>—— Swap Nodes in Pairs
24、 Swap Nodes in Pairs两两交换链表中的节点给一个链表,两两交换其中的节点,然后返回交换后的链表。样例给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。挑战 你的算法只能使用常数的额外空间,并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。代码:/** *原创 2017-09-05 19:27:26 · 179 阅读 · 0 评论 -
<25>——Reverse Nodes in k-Group
25、Reverse Nodes in k-GroupK组翻转链表给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下。链表元素个数不是k的倍数,最后剩余的不用翻转。样例给出链表 1->2->3->4->5k = 2, 返回 2->1->4->3->5k = 3, 返回 3->2->1->4->5代码:/** *原创 2017-09-05 22:51:04 · 204 阅读 · 0 评论 -
<26>——Remove Duplicates from Sorted Array
26、Remove Duplicates from Sorted Array删除排序数组中的重复数字给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。样例给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。分析:原创 2017-09-06 22:46:09 · 154 阅读 · 0 评论 -
<27>——Remove Element
27、Remove Element删除元素给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。元素的顺序可以改变,并且对新的数组不会有影响。样例给出一个数组 [0,4,4,0,0,2,4,4],和值 4返回 4 并且4个元素的新数组为[0,0,0,2]分析:与上一题相似,只是将比较数字改为固定数字。代码:clas原创 2017-09-08 20:52:40 · 144 阅读 · 0 评论 -
<28>—— Implement strStr()
28、 Implement strStr()字符串查找对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。样例如果 source = "source" 和 target = "target",返回 -1。如果 source =原创 2017-09-08 21:51:18 · 185 阅读 · 0 评论 -
<29>——Divide Two Integers
29、Divide Two Integers原创 2017-09-09 16:07:24 · 175 阅读 · 0 评论 -
<30>——Substring with Concatenation of All Words
现有一组长度相等的字符串words,要在原字符串中找出正好包含words中所有字符串的子字符串的起始位置。 例子: 输入: s = “barfoothefoobarman”, words = [“foo”, “bar”] 输出: [0, 9]原创 2017-09-09 20:21:11 · 196 阅读 · 0 评论 -
<31>——Next Permutation
31、Next Permutation下一个排列给定一个整数数组来表示排列,找出其之后的一个排列。 注意事项排列中可能包含重复的整数样例给出排列[1,3,2,3],其下一个排列是[1,3,3,2]给出排列[4,3,2,1],其下一个排列是[1,2,3,4]分析:下一个排列,即组成下一个比他大的数字,如:1359原创 2017-09-09 21:50:51 · 186 阅读 · 0 评论