
leetcode解题
崔先生的博客
知行合一
展开
-
leetcode之Add Binary(67)
题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"python代码1:class Solution: def addBinary(self, a, b): c原创 2018-04-17 17:51:35 · 1983 阅读 · 0 评论 -
leetcode之Plus One(66)
题目:给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。可以假设整数不包含任何前导零,除了数字0本身。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。python代码:cl...原创 2018-04-17 16:21:26 · 1594 阅读 · 1 评论 -
leetcode之Length of Last Word(58)
题目:给定一个字符串, 包含大小写字母、空格 ' ',请返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。注意事项:一个单词的界定是,由字母组成,但不包含任何的空格。案例:输入: "Hello World"输出: 5python代码1:class Solution: def lengthOfLastWord(self, s): return len(s.rs...原创 2018-04-16 16:33:03 · 1589 阅读 · 0 评论 -
leetcode之Maximum Subarray(53)
题目:给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],连续子序列 [4,-1,2,1] 的和最大,为 6。python代码1:class Solution: def maxSubArray(self, nums): max = nums[0] for i ...原创 2018-04-15 22:18:52 · 1074 阅读 · 0 评论 -
leetcode之Search Insert Position(35)
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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输出: 0python代码1:cl...原创 2018-04-15 11:11:45 · 1063 阅读 · 0 评论 -
leetcode之 Implement strStr()(28)
题目:实现 strStr()。返回蕴含在 haystack 中的 needle 的第一个字符的索引,如果 needle 不是 haystack 的一部分则返回 -1例 1:输入: haystack = "hello", needle = "ll"输出: 2 例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1python代码1:class Solu...原创 2018-04-10 16:14:36 · 1088 阅读 · 0 评论 -
leetcode之Remove Element(27)
题目:给定一个数组和一个值,在这个数组中原地移除指定值和返回移除后新的数组长度。不要为其他数组分配额外空间,你必须使用 O(1) 的额外内存原地修改这个输入数组。元素的顺序可以改变。超过返回的新的数组长度以外的数据无论是什么都没关系。 示例:给定 nums = [3,2,2,3],val = 3,你的函数应该返回 长度 = 2,数组的前两个元素是 2。python...原创 2018-04-10 14:52:01 · 1142 阅读 · 0 评论 -
leetcode之Remove Duplicates from Sorted Array(26)
题目:给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。示例:给定数组: nums = [1,1,2],你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2不需要理会新的数组长度后面的元素python代码:class Solution: def...原创 2018-04-10 11:23:34 · 1568 阅读 · 0 评论 -
leetcode之Merge Two Sorted Lists(21)
题目:合并两个已排序的链表,并将其作为一个新列表返回。新列表应该通过拼接前两个列表的节点来完成。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4python代码:class Solution: def mergeTwoLists(self, l1, l2): if l1==None ...原创 2018-04-08 21:09:48 · 1099 阅读 · 0 评论 -
leetcode之Valid Parentheses(20)
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。括号必须以正确的顺序关闭,"()" 和 "()[]{}" 是有效的但是 "(]" 和 "([)]" 不是。python代码1:class Solution: def isValid(self, s): pars = [None] parmap = {')':'...原创 2018-04-08 19:46:29 · 1048 阅读 · 0 评论 -
leetcode之Longest Common Prefix(14)
题目:编写一个函数来查找字符串数组中最长的公共前缀字符串。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:原创 2018-04-06 19:27:18 · 1081 阅读 · 0 评论 -
leetcode之Roman to Integer(13)
题目:给定一个罗马数字,将其转换成整数。返回的结果要求在 1 到 3999 的范围内。python代码:class Solution: def romanToInt(self, s): sum = 0 convert = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} ...原创 2018-04-06 17:57:54 · 1060 阅读 · 0 评论 -
leetcode之Palindrome Number(9)
题目:判断一个整数是否是回文数。不能使用辅助空间。一些提示:负整数可以是回文数吗?(例如 -1)如果你打算把整数转为字符串,请注意不允许使用辅助空间的限制。你也可以考虑将数字颠倒。但是如果你已经解决了 “颠倒整数” 问题的话,就会注意到颠倒整数时可能会发生溢出。你怎么来解决这个问题呢?本题有一种比较通用的解决方式。python代码:class Solution: def isPalindr...原创 2018-04-05 18:18:50 · 1437 阅读 · 0 评论 -
leetcode之Reverse Integer(7)
题目:给定一个范围为 32 位 int 的整数,将其颠倒。例 1:输入: 123输出: 321例 2:输入: -123输出: -321例 3:输入: 120输出: 21注意:假设我们的环境只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。python代码:class Solution: def reverse(self, x): ...原创 2018-04-05 17:56:34 · 1884 阅读 · 0 评论 -
leetcode之Two Sum(1)
题目:给定一个整数数列,找出其中和为特定值的那两个数。你可以假设每个输入都只会有一种答案,同样的元素不能被重用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码:class Solution: def twoSum(self, nums, target): ...原创 2018-04-04 19:51:40 · 1809 阅读 · 0 评论 -
leetcode之Integer to Roman(12)
题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...原创 2018-05-17 20:43:03 · 142 阅读 · 0 评论 -
leetcode之Binary Tree Level Order Traversal II(107)
题目: 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]python代码:...原创 2018-05-17 21:24:35 · 134 阅读 · 0 评论 -
leetcode之Sqrt(x)(69)
题目: 实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。Python代码1:clas...原创 2018-05-17 21:32:29 · 147 阅读 · 0 评论 -
leetcode之Climbing Stairs(70)
题目:假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. 1 步 + 2 步3...原创 2018-05-17 21:35:35 · 132 阅读 · 0 评论 -
leetcode之Remove Duplicates from Sorted List(83)
题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3Python代码:class Solution: def deleteDuplicates(self, head): if head ...原创 2018-05-17 21:37:55 · 149 阅读 · 0 评论 -
leetcode之Merge Sorted Array(88)
题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3n...原创 2018-05-15 23:30:15 · 194 阅读 · 0 评论 -
leetcode之Same Tree(100)
题目: 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...原创 2018-05-15 23:52:10 · 198 阅读 · 0 评论 -
leetcode之Symmetric Tree (101)
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。...原创 2018-05-16 19:10:12 · 157 阅读 · 0 评论 -
leetcode之Maximum Depth of Binary Tree(104)
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。python代码:class Solution: def maxDepth(self, ro...原创 2018-05-16 19:13:07 · 127 阅读 · 0 评论 -
leetcode之Binary Tree Preorder Traversal(144)
题目:给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?python代码1:(递归版)class Solution: def preorderTraversal(self, root): ...原创 2018-07-30 11:39:39 · 90 阅读 · 0 评论 -
leetcode之Binary Tree Inorder Traversal(94)
题目:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?python代码1:(递归版):class Solution: def inorderTraversal(self, root): i...原创 2018-07-30 11:42:08 · 162 阅读 · 0 评论 -
leetcode之Binary Tree Postorder Traversal (145)
题目:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?python代码1:(递归版)class Solution: def postorderTraversal(self, root): ...原创 2018-07-30 11:45:21 · 95 阅读 · 0 评论 -
leetcode之Convert Sorted Array to Binary Search Tree(108)
题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / ...原创 2018-07-26 21:02:40 · 228 阅读 · 0 评论 -
leetcode之Balanced Binary Tree(110)
题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null...原创 2018-07-26 21:12:47 · 137 阅读 · 0 评论 -
leetcode之Minimum Depth of Binary Tree (111)
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.python代码:class Solution: ...原创 2018-07-26 21:16:57 · 108 阅读 · 0 评论 -
leetcode之Path Sum (112)
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 ...原创 2018-07-26 21:19:10 · 110 阅读 · 0 评论 -
leetcode之Pascal's Triangle(118)
题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]python代码:class Solution: def generate(self...原创 2018-07-26 21:21:17 · 252 阅读 · 0 评论 -
leetcode之Pascal's Triangle II(119)
题目:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?python代码1:class Solution: def getRow(self, rowIndex): if r...原创 2018-07-26 21:27:00 · 163 阅读 · 0 评论 -
leetcode之Best Time to Buy and Sell Stock(121)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5...原创 2018-07-26 21:29:35 · 111 阅读 · 0 评论 -
leetcode之Best Time to Buy and Sell Stock II(122)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖...原创 2018-07-26 21:31:56 · 113 阅读 · 0 评论 -
leetcode之Valid Palindrome(125)
题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falsepython代码:class Solution: def...原创 2018-07-26 21:33:32 · 102 阅读 · 0 评论 -
leetcode之Remove Linked List Elements(203)
题目:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5python代码:class Solution(object): def removeElements(self, head, val): ...原创 2018-08-03 16:16:00 · 126 阅读 · 0 评论 -
leetcode之Palindrome Linked List(234)
题目:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?python代码:class Solution(object): def isPalindrome(self, hea...原创 2018-08-03 16:38:14 · 104 阅读 · 0 评论 -
leetcode之Delete Node in a Linked List(237)
题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 -> 9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了...原创 2018-08-03 16:52:12 · 116 阅读 · 0 评论 -
leetcode之Middle of the Linked List(876)
题目:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3...原创 2018-08-03 17:07:46 · 597 阅读 · 0 评论