
LeetCode
K-Stephen
热爱数据科学的超级英雄迷
展开
-
【LeetCode567】字符串的排列
1.题目描述给定两个字符串s1和s2,写一个函数来判断 s2 是否包含 s1的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False...原创 2019-11-06 15:56:44 · 156 阅读 · 0 评论 -
【LeetCode409】最长回文串
1.题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。2.解法解法一:哈希表cla...原创 2019-10-21 16:21:14 · 97 阅读 · 0 评论 -
【LeetCode5】最长回文子串
1.题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"2.解法解法一:马拉车算法class Solution: def longestPalindrome(self, s:...原创 2019-10-21 16:08:15 · 133 阅读 · 0 评论 -
【LeetCode39】组合总和
1.题目描述给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target = 7...原创 2019-10-18 14:11:00 · 211 阅读 · 0 评论 -
【LeetCode17】电话号码的字母组合
1.题目描述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].2.解法解法一:回溯法class Solution: def lett...原创 2019-10-18 11:55:58 · 268 阅读 · 0 评论 -
【LeetCode22】括号生成
1.题目生成给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]2.解法解法一:回溯法class Solution: def generateParenthesis(...原创 2019-10-18 11:13:00 · 111 阅读 · 0 评论 -
【LeetCode20】有效的括号
1.题目描述给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false...原创 2019-10-17 22:42:38 · 83 阅读 · 0 评论 -
【LeetCode13】罗马数字转整数
1.题目描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为...原创 2019-10-17 14:48:56 · 95 阅读 · 0 评论 -
【LeetCode145】二叉树的后序遍历
1.题目描述给定一个二叉树,返回它的 后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]2.解法解法一:递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...原创 2019-10-17 11:30:28 · 166 阅读 · 0 评论 -
【LeetCode144】二叉树的前序遍历
1.题目描述给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]2.解法解法一:递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...原创 2019-10-17 11:00:01 · 110 阅读 · 0 评论 -
【LeetCode94】二叉树的中序遍历
1.题目描述给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]2.解法解法一:递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...原创 2019-10-17 10:22:53 · 157 阅读 · 0 评论 -
【LeetCode367】有效的完全平方数
1.题目描述给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False2.解法解法一:二分查找,注意取右中位数class Solution: def isPerfectSquare...原创 2019-10-16 11:03:54 · 144 阅读 · 0 评论 -
【LeetCode270】最接近的二叉搜索树值
1.题目描述给定一个不为空的二叉搜索树和一个目标值 target,请在该二叉搜索树中找到最接近目标值 target 的数值。注意:给定的目标值 target 是一个浮点数题目保证在该二叉搜索树中只会存在一个最接近目标值的数示例:输入: root = [4,2,5,1,3],目标值 target = 3.714286 4 / \ 2 5/ \1 ...原创 2019-10-16 10:29:00 · 1180 阅读 · 0 评论 -
【LeetCode167】两数之和II
1.题目描述给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 1...原创 2019-10-16 09:47:08 · 104 阅读 · 0 评论 -
【LeetCode69】x的平方
1.题目描述实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。2.解法解法一:二分查找cla...原创 2019-10-15 22:19:06 · 165 阅读 · 0 评论 -
【LeetCode392】判断子序列
1.题目描述给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。...原创 2019-10-14 16:19:06 · 101 阅读 · 0 评论 -
【LeetCode1025】除数博弈
1.题目描述爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字N。在每个玩家的回合,玩家需要执行以下操作:选出任一x,满足0 < x < N 且N % x == 0。用 N - x替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回True,否则返回 false。假设两个玩家...原创 2019-10-14 16:07:07 · 120 阅读 · 0 评论 -
【LeetCode303】区域和检索-数组不可变
1.题目描述给定一个整数数组 nums,求出数组从索引i到j(i≤j) 范围内元素的总和,包含i,j两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:...原创 2019-10-14 15:29:28 · 109 阅读 · 0 评论 -
【LeetCode746】使用最小花费爬楼梯
1.题目描述数组的每个索引做为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20]输出: 15解释:...原创 2019-10-14 14:58:14 · 96 阅读 · 0 评论 -
【LeetCode256】粉刷房子
1.题目描述假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个n x 3的矩阵来表示的。例如,costs[0][0] 表示第 0 号房子粉刷成红色的成本花费;costs[...原创 2019-10-14 14:14:26 · 1337 阅读 · 0 评论 -
【LeetCode276】栅栏涂色
1.题目描述有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏,每个栅栏柱可以用其中一种颜色进行上色。你需要给所有栅栏柱上色,并且保证其中相邻的栅栏柱 最多连续两个颜色相同。然后,返回所有有效涂色的方案数。注意:n 和k 均为非负的整数。示例:输入: n = 3,k = 2输出: 6解析: 用 c1 表示颜色 1,c2 表示颜色 2,所有可能的涂色方案有: ...原创 2019-10-14 10:54:35 · 1745 阅读 · 2 评论 -
【LeetCode15】三数之和
1.题目描述给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]2...原创 2019-10-13 10:20:42 · 135 阅读 · 0 评论 -
【LeetCode35】搜索插入位置
1.题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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...原创 2019-10-09 09:08:55 · 77 阅读 · 0 评论 -
【LeetCode27】移除元素
1.题目描述给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。2.示例示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长...原创 2019-10-08 23:32:05 · 77 阅读 · 0 评论 -
【LeetCode26】删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2...原创 2019-09-26 21:12:18 · 111 阅读 · 0 评论 -
【LeetCode14】最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。# 解法一:水平扫描法 72msclass Solution: def long...原创 2019-09-26 17:43:49 · 80 阅读 · 0 评论 -
【LeetCode2】两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...原创 2019-09-26 14:48:17 · 127 阅读 · 0 评论 -
【LeetCode1】两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣...原创 2019-09-26 11:52:26 · 72 阅读 · 0 评论 -
【LeetCode374】猜数字大小
1.题目描述我们正在玩一个猜数字游戏。 游戏规则如下:我从1到n选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口guess(int num),它会返回 3 个可能的结果(-1,1或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!示例 :输入: n = 10, ...原创 2019-10-09 10:17:41 · 166 阅读 · 0 评论 -
【LeetCode66】加一
1.题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字...原创 2019-10-09 11:42:49 · 97 阅读 · 0 评论 -
【LeetCode67】二进制求和
1.题目描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例1:输入: a = "11", b = "1"输出: "100"示例2:输入: a = "1010", b = "1011"输出: "10101"2.解法解法一:class Solution: def addBinary(self, a...原创 2019-10-09 16:52:34 · 92 阅读 · 0 评论 -
【LeetCode88】合并两个有序数组
1.题目描述给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3...原创 2019-10-10 11:38:11 · 118 阅读 · 0 评论 -
【LeetCode21】合并两个有序链表
1.题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->42.解法解法一:前置节点class Solution: def mergeTwoLists(self, l1: List...原创 2019-10-10 18:50:41 · 108 阅读 · 0 评论 -
【LeetCode】常见解法总结
1.双指针法从前向后遍历 从后向前遍历 快指针、慢指针2.滑窗法2.二分查找(1)十分好用的二分查找模板https://leetcode-cn.com/problems/search-insert-position/solution/te-bie-hao-yong-de-er-fen-cha-fa-fa-mo-ban-python-/3.递归解法4.动态规划...原创 2019-10-11 16:53:06 · 435 阅读 · 0 评论 -
【LeetCode121】买卖股票的最佳时机
1.题目描述给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 ...原创 2019-10-11 19:26:21 · 102 阅读 · 0 评论 -
【LeetCode122】买卖股票的最佳时机 II
1.题目描述给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的...原创 2019-10-11 19:27:54 · 116 阅读 · 0 评论 -
【LeetCode3】最长子字符串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"...原创 2019-09-25 15:59:27 · 205 阅读 · 0 评论