![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
zuolixiangfisher
有空一起钓鱼啊
展开
-
剑指offer13题-在O(1)时间内删除链表节点
1、输入是val: ListNode 解法# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, head: ListNode, val: ListNode) -> ListNode: if n原创 2021-11-28 15:28:56 · 344 阅读 · 0 评论 -
LeetCode刷题--贪心算法
455. 分糖果135. 糖果435. 无重叠区间def eraseOverlapIntervals(intervals): intervals_sort = sorted(intervals, key=lambda x: x[-1]) length = len(intervals_sort) max_num = intervals_sort[0][-1] k = 1 for item in range(1, length): if interv原创 2021-07-28 17:37:21 · 305 阅读 · 0 评论 -
LeetCode(No.189)--旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k...原创 2019-03-10 18:17:17 · 114 阅读 · 0 评论 -
LeetCode(No.104)--二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。思路: 递归逐层往下计算方法1:class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int...原创 2019-02-19 23:05:33 · 134 阅读 · 0 评论 -
LeetCode(No.101)--对称二叉树
给定一个二叉树,检查它是否是镜像对称的。思路: 类似上一题,利用递归判断左右子树是否相等方法1:class Solution: def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ #思路主要参考leetcode10..原创 2019-02-19 23:04:45 · 138 阅读 · 0 评论 -
LeetCode(No.100)--相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。方法:class Solution: def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool ...原创 2019-02-19 23:04:19 · 103 阅读 · 0 评论 -
LeetCode(No.38)--报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正整...原创 2019-02-19 20:23:42 · 113 阅读 · 0 评论 -
LeetCode(No.88)--合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5...原创 2019-02-19 20:23:00 · 104 阅读 · 0 评论 -
LeetCode(No.83)--删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3思路: 判断链表表头是否为空,然后逐个判断当前节点和前一个节点是否相等class Solution:原创 2019-02-19 11:55:38 · 159 阅读 · 0 评论 -
LeetCode(No.70)--爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. 1 阶 + 2 阶5. ...原创 2019-02-18 09:12:29 · 122 阅读 · 0 评论 -
LeetCode(No.175)--组合两个表
表1:Person编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, Stateselect FirstName, LastName, City, State from Person p left join Address a on p.PersonId=a...原创 2019-02-21 19:57:54 · 208 阅读 · 0 评论 -
LeetCode(No.172)--阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。思路: 只需要求n里包含多少个5即可class Solution(object): def trailingZeroes(...原创 2019-02-21 19:57:44 · 119 阅读 · 0 评论 -
LeetCode(No.190)--颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 0011100101...原创 2019-03-10 18:22:02 · 104 阅读 · 0 评论 -
LeetCode(No.191)--位1的个数
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输...原创 2019-12-19 17:20:40 · 118 阅读 · 0 评论 -
LeetCode(No.718)--最长重复子数组
给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100思路: 维护矩阵DP,DP[i][j]代...原创 2019-04-07 21:02:47 · 256 阅读 · 0 评论 -
LeetCode(No.347)--前K个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。...原创 2019-04-07 17:53:50 · 106 阅读 · 0 评论 -
LeetCode(No.747)--至少是其他数字两倍的最大数
在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.示例 2:输入: nums = [1, 2, 3,...原创 2019-04-07 16:45:13 · 174 阅读 · 0 评论 -
LeetCode(N0.665)--非递减数列
给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:输入: [4,2,3]输出: True解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2...原创 2019-04-07 16:09:00 · 260 阅读 · 0 评论 -
LeetCode(No.746)--使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步...原创 2019-04-07 11:31:32 · 218 阅读 · 0 评论 -
LeetCode(N0.643)--子数组最大平均值I
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75注意:1 <= k <= n <= 30,000。所给数据范围 [-10,000,10,000]。方法1:直接遍历,计算超...原创 2019-04-07 09:04:40 · 266 阅读 · 0 评论 -
LeetCode(No.674)--最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。注意:数组长度不会超过100...原创 2019-04-06 23:07:46 · 168 阅读 · 0 评论 -
LeetCode(No.4)--寻找两个有序数组中的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)...原创 2019-03-22 20:24:01 · 105 阅读 · 0 评论 -
LeetCode(No.198)--打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2019-03-10 20:42:08 · 137 阅读 · 0 评论 -
LeetCode(No.202)--快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1...原创 2019-03-14 22:48:24 · 138 阅读 · 0 评论 -
LeetCode(No.169)--求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路: 利用字典将每个元素作为key,对应出现次数作为value存入字典,输出value最大的key即可class Solution...原创 2019-02-21 19:57:38 · 124 阅读 · 0 评论 -
LeetCode(No.167)--两数之和 II - 输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], tar...原创 2019-02-21 19:57:31 · 128 阅读 · 0 评论 -
LeetCode(No.69)--x的平方根
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。思路: 可以用牛顿法也可以直接求解方法1:class Solution: ...原创 2019-02-17 10:19:25 · 107 阅读 · 0 评论 -
LeetCode(No.28)--实现strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba...原创 2019-02-15 11:09:37 · 96 阅读 · 0 评论 -
LeetCode(No.27)--移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2019-02-15 10:54:07 · 126 阅读 · 0 评论 -
LeetCode(No.26)--删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...原创 2019-02-15 10:38:30 · 152 阅读 · 0 评论 -
LeetCode(No.20)--有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...原创 2019-02-15 10:21:47 · 107 阅读 · 0 评论 -
LeetCode(No.14)--最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。本人写的比较lowclass Solution: d...原创 2019-02-15 10:09:29 · 104 阅读 · 0 评论 -
LeetCode(No.13)--罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数...原创 2018-12-23 21:48:20 · 134 阅读 · 0 评论 -
LeetCode(No.9)--回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。class So...原创 2018-12-23 21:34:42 · 111 阅读 · 0 评论 -
LeetCode(No.7)--整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路:只需要先判断整数符号,如...原创 2018-12-23 16:44:40 · 163 阅读 · 0 评论 -
LeetCode(No.5)--最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”class Solution: def longestPalindrome(self, s): """ :type s: ...原创 2018-12-23 16:37:41 · 135 阅读 · 0 评论 -
LeetCode(No.3)--无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。示例: 给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。 给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。 给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。思路: 利用字典和一个中间变量,将字符串中的字符逐个加入原创 2018-05-04 19:12:43 · 437 阅读 · 0 评论 -
LeetCode(No.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输出: 0思路: 先判断数...原创 2019-02-16 20:57:50 · 122 阅读 · 0 评论 -
LeetCode(No.107)--二叉树的层次遍历II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)class Solution: def levelOrderBottom(self, root): """ :type root: TreeNode :rtype: List[List[int]] """原创 2019-02-20 18:05:22 · 166 阅读 · 0 评论 -
LeetCode(No.118)--杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。思路: 先生成一个基础的全为1的矩阵,然后再利用公式迭代更新对应位置的元素class Solution: def generate(self, numRows): """ :type numRows: int :rtype: List[List[int]] ...原创 2019-02-20 18:05:50 · 113 阅读 · 0 评论