Leetcode
刷leetcode的相关内容
大大大石頭
各种小白,记录点滴,慢慢学习
展开
-
[Leetcode]Swap Nodes In Pairs 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路:/** * Definition for singly-linked list. * function L...原创 2018-11-12 22:22:31 · 209 阅读 · 0 评论 -
[LeetCode] Container With Most Water 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意:你不能倾斜容器,n 至少是2。思路: 1、定义i和j两个指针分别指向数组的左右两端, 2、然后两个指针向中间搜索,每移动一次算一个值和结果比...原创 2018-05-01 11:51:30 · 239 阅读 · 0 评论 -
[LeetCode] Regular Expression Matching 正则表达式匹配
给定一个字符串 (s) 和一个字符模式 (p)。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例 1:输入:s = "aa"...原创 2018-05-01 11:28:26 · 155 阅读 · 0 评论 -
[LeetCode] Longest Palindromic Substring 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 长度最长为1000。示例:输入: "babad"输出: "bab"注意: “aba”也是有效答案示例:输入: "cbbd"输出: "bb"思路:做这个题,需要考虑两个问题: 1、相同的字符一定是回文的 2、在相同的字符两侧有回文的字符/** * @para...原创 2018-04-08 23:09:51 · 230 阅读 · 0 评论 -
[LeetCode] Longest Substring Without Repeating Characters 无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须原创 2018-02-24 10:41:25 · 339 阅读 · 0 评论 -
[LeetCode] Add Two Numbers 两数相加
给定两个非空链表来代表两个非负数,位数按照逆序方式存储,它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:输入两个链表,输出一个链表...原创 2018-02-20 22:49:03 · 8728 阅读 · 2 评论 -
[LeetCode] Valid Parentheses 有效的括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。思路:我们需要一个栈,遍历字符串,如果是左半括号,就压入栈中,如果是右半括号,就从栈中拿出栈顶元素匹配,如果成对,则继续遍历。如果栈为空,则返回false。/** * @param {s...原创 2018-02-19 21:47:58 · 270 阅读 · 0 评论 -
[LeetCode] Longest Common Prefix 最长共同前缀
编写一个函数来查找字符串数组中最长的公共前缀字符串。思路: 最大的公共前缀,肯定要小于数组中最短的字符串,然后只要比较最短的和最长的比较就可以了。 暴力遍历貌似效率挺低的。 js的sort()方法貌似效率还可以/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = fun...原创 2018-02-19 20:19:21 · 273 阅读 · 0 评论 -
[LeetCode] Two Sum 两数之和
给定一个整数字符串,找出和为特定数字的两个数。 两数和(twoSum)这个函数应该返回和为目标值的两个数字的下标。 可以假设每个输入都会只有一种答案,并且同样的元素不能被重用。 示例:给定 nums = [2, 7, 11, 15], target = 9,因为 nums[0] + nums[1] = 2 + 7 = 9,返回 [0, 1].思路:原先想着先遍历一遍数组...原创 2018-02-19 19:39:10 · 598 阅读 · 0 评论 -
[LeetCode] 3Sum 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:/**...原创 2018-05-03 17:06:03 · 254 阅读 · 0 评论 -
[LeetCode] 3Sum Closest 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:/** * @param...原创 2018-05-03 17:25:26 · 421 阅读 · 0 评论 -
[LeetCode]Merge k Sorted Lists 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路:/** * Definiti原创 2018-11-12 22:20:26 · 280 阅读 · 0 评论 -
[LeetCode] Generate Parentheses 生成括号
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路:/** * @param {number} n * @retu原创 2018-11-12 22:18:30 · 266 阅读 · 0 评论 -
[LeetCode] Two Sum 两数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:...原创 2018-09-10 20:11:17 · 163 阅读 · 0 评论 -
[LeetCode] String to Integer (atoi) 字符串转为整数
实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字...原创 2018-04-29 22:18:15 · 274 阅读 · 0 评论 -
[LeetCode] ZigZag Converesion Z字形变换
将字符串 “PAYPALISHIRING” 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:”PAHNAPLSIIGYIR”实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows); 示例 1:输入: s = "PAYPALISHI...原创 2018-04-29 22:06:13 · 285 阅读 · 0 评论 -
[LeetCode] Remove Nth Node From End of List 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/** * Definition for singly-lin...原创 2018-05-07 10:23:52 · 131 阅读 · 0 评论 -
[LeetCode] 4Sum 四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集...原创 2018-05-07 10:22:28 · 208 阅读 · 0 评论 -
[LeetCode] Letter Combinations of a Phone Number 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明: 尽管原创 2018-05-04 11:24:28 · 656 阅读 · 0 评论 -
[LeetCode] Reverse Integer 翻转整数
给定一个范围为 32 位 int 的整数,将其颠倒。 例 1:输入: 123输出: 321例 2:输入: -123输出: -321例 3:输入: 120输出: 21注意: 假设我们的环境只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。思路:想到对一个数的reverse,可以用对这个数依次除10,结...原创 2018-02-19 19:45:41 · 805 阅读 · 0 评论 -
[LeetCode] Palindrome Number 回文数字
判断一个整数是否是回文数。不能使用辅助空间。一些提示:负整数可以是回文数吗?(例如 -1)如果你打算把整数转为字符串,请注意不允许使用辅助空间的限制。你也可以考虑将数字颠倒。但是如果你已经解决了 “颠倒整数” 问题的话,就会注意到颠倒整数时可能会发生溢出。你怎么来解决这个问题呢?本题有一种比较通用的解决方式。/** * @param {number} x * @...原创 2018-02-19 19:48:18 · 343 阅读 · 0 评论 -
[LeetCode] Integer to Roman 整数转罗马数字
给定一个整数,将其转为罗马数字。 输入保证在 1 到 3999 之间。思路:运用贪心算法,建立一个数表,每次通过查表找出当前最大的数,减去再继续查表。/** * @param {number} num * @return {string} */var intToRoman = function(num) { let res = "", val = [1...原创 2018-02-19 20:04:58 · 243 阅读 · 0 评论 -
[LeetCode] Maximum Subarray 最大子序和
给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],连续子序列 [4,-1,2,1] 的和最大,为 6。扩展练习: 若你已实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路:定义两个变量res和curSum,其中res保存最终要返回的结果,即最大的子数组之和,cu...原创 2018-02-28 10:27:51 · 1972 阅读 · 0 评论 -
[LeetCode] Count and Say 数数并说
数数并说序列是一个整数序列,第二项起每一项的值为对前一项的计数,其前五项如下:111211211111221 1 被读作 “一个一” 即 11。 11 被读作 “两个一” 即 21。 21 被读作 “一个二 和 一个一” 即 1211。 给一个正整数 n ,输出数数并说序列的第 n 项。 注意:该整数序列的每项都输出为字符串。例 1:输入: 1输出: "...原创 2018-02-27 10:32:47 · 4682 阅读 · 0 评论 -
[LeetCode] Search Insert Position 搜索插入位置
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。 你可以假设在数组中无重复元素。案例 1:输入: [1,3,5,6], 5输出: 2案例 2:输入: [1,3,5,6], 2输出: 1案例 3:输入: [1,3,5,6], 7输出: 4案例 4:输入: [1,3,5,6], 0输出:...原创 2018-02-27 10:25:19 · 266 阅读 · 0 评论 -
[LeetCode] Implement strStr() 实现strStr()
实现 strStr()。 返回蕴含在 haystack 中的 needle 的第一个字符的索引,如果 needle 不是 haystack 的一部分则返回 -1 。例 1:输入: haystack = "hello", needle = "ll"输出: 2例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1思路:在一个字符串...原创 2018-02-27 10:18:15 · 238 阅读 · 0 评论 -
[LeetCode] Remove Element 移除元素
给定一个数组和一个值,在这个数组中原地移除指定值和返回移除后新的数组长度。 不要为其他数组分配额外空间,你必须使用 O(1) 的额外内存原地修改这个输入数组。 元素的顺序可以改变。超过返回的新的数组长度以外的数据无论是什么都没关系。示例:给定 nums = [3,2,2,3],val = 3,你的函数应该返回 长度 = 2,数组的前两个元素是 2。思路:定义一个变量用来计数,遍历...原创 2018-02-27 09:51:42 · 1747 阅读 · 0 评论 -
[LeetCode] Remove Duplicates from Sorted Array 从有序数组中删除重复项
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。 不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。 示例:给定数组: nums = [1,1,2],你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2不需要理会新的数组长度后面的元素思路:用快慢指针来记录遍历的坐标,最开始时两个指针都...原创 2018-02-27 09:42:18 · 1854 阅读 · 0 评论 -
[LeetCode] Merge Two Sorted Lists 合并两个有序链表
合并两个已排序的链表,并将其作为一个新列表返回。新列表应该通过拼接前两个列表的节点来完成。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中,由于两个输入链表的长度可能不同,所以最终会有一个链表先完成插入所有元素,则直接另一个...原创 2018-02-27 09:31:07 · 1306 阅读 · 0 评论 -
LeetCode Javascript 刷刷刷~~
用javascript从头开始整理leetcode刷题过程中的思路啊,代码啊什么的,提高一下自己的算法能力吧~作为自己提高代码量的一种方法吧。反正使劲儿刷,刷完了就复习。整理下来以便以后查阅 Number Name Difficulty 1 Two Sum 两数之和 Easy 2 Add Two Numbers 两数相加 Medium...原创 2018-02-14 21:51:57 · 1790 阅读 · 0 评论 -
[LeetCode] Length of Last Word 最后一个单词的长度
给定一个字符串, 包含大小写字母、空格 ’ ‘,请返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。注意事项:一个单词的界定是,由字母组成,但不包含任何的空格。案例:输入: "Hello World"输出: 5思路:我们关心的主要是非空格的字符,那么实际上在遍历字符串的时候,如果遇到非空格的字符,我们只需要判断其前面一个位置的字符是否为空格,如果是的话,那么...原创 2018-02-28 10:31:54 · 268 阅读 · 0 评论 -
[LeetCode] Plus One 加一
给定一个非负整数组成的非空数组,给整数加一。 可以假设整数不包含任何前导零,除了数字0本身。 最高位数字存放在列表的首位。思路:将一个数字的每个位上的数字分别存到一个一维向量中,最高位在最开头,我们需要给这个数字加一,即在末尾数字加一,如果末尾数字是9,那么则会有进位问题,而如果前面位上的数字仍为9,则需要继续向前进位。具体算法如下:首先判断最后一位是否为9,若不是,直接加一返回,若是,则...原创 2018-02-28 10:34:43 · 2183 阅读 · 0 评论 -
[LeetCode] Roman to Integer 罗马数字转整数
给定一个罗马数字,将其转换成整数。 返回的结果要求在 1 到 3999 的范围内。 基本字符 I V X L C D M 相应的阿拉伯数字表示为 1 5 10 50 100 500 1000- 相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3; - 小的数字在大的数字的右边,所表示的...原创 2018-02-19 20:15:20 · 227 阅读 · 0 评论 -
[LeetCode] Remove Linked List Elements 删除链表中的元素
删除链表中等于给定值 val 的所有元素。示例给定: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6返回: 1 --> 2 --> 3 --> 4 --> 5感谢:特别感谢 @mithmatt 添加此问题并创建所有测试用例。思路:用递归来解,写法很简洁,通过递归调用到...原创 2018-02-28 14:22:13 · 205 阅读 · 0 评论 -
[LeetCode] Same Tree 相同的树
给定两个二叉树,写一个函数来检查它们是否相同。如果两棵树在结构上相同并且节点具有相同的值,则认为它们是相同的。示例 1:输入 : 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入 : 1 ...原创 2018-02-28 14:19:11 · 237 阅读 · 0 评论 -
[LeetCode] Merge Sorted Array 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1中,使得 num1 成为一个有序数组。注意:你可以假设 nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。在 nums1 和 nums2 中初始化的元素的数量分别是 m 和 n。思路:由于合并后A数组的大小必定是m+n,所以从最后面开始往前赋值,先比较A和B中最后一个元...原创 2018-02-28 14:15:29 · 955 阅读 · 0 评论 -
[LeetCode] Remove Duplicates from Sorted List 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素使得每个元素只留下一个。案例:给定 1->1->2,返回 1->2给定 1->1->2->3->3,返回 1->2->3思路:移除有序链表中的重复项需要定义个指针指向该链表的第一个元素,然后第一个元素和第二个元素比较,如果重复了,则删掉第二个元素,如果不重复,指针指向第二个元素。这样遍历完...原创 2018-02-28 14:12:05 · 252 阅读 · 0 评论 -
[LeetCode] Climbing Stairs 爬楼梯
你正在爬楼梯。需要 n 步你才能到达顶部。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方式可以爬到楼顶呢? 注意:给定 n 将是一个正整数。示例 1:输入: 2输出: 2说明: 有两种方法可以爬到顶端。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3说明: 有三种方法可以爬到顶端。1. 1 步 + 1 步 + 1 步2. ...原创 2018-02-28 14:06:31 · 269 阅读 · 0 评论 -
[LeetCode] Sqrt(x) x 的平方根
实现 int sqrt(int x) 函数。 计算并返回 x 的平方根。 x 保证是一个非负整数。案例 1:输入: 4输出: 2案例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于我们想返回一个整数,小数部分将被舍去。思路:要求x^2 = n的解,令f(x)=x^2-n,相当于求解f(x)=0的解/** * @param...原创 2018-02-28 13:46:17 · 872 阅读 · 0 评论 -
[LeetCode] Add Binary 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。案例:a = "11"b = "1"返回 "100" 。思路:下面这种写法又巧妙又简洁,用了两个指针分别指向a和b的末尾,然后每次取出一个字符,转为数字,若无法取出字符则按0处理,然后定义进位carry,初始化为0,将三者加起来,对2取余即为当前位的数字,对2取商即为当前进位的值,记得最后还要判断下carry,如果为1的话,要...原创 2018-02-28 13:41:27 · 278 阅读 · 0 评论