![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode每日一题
以LeetCode的每日一题为主持续更新。以算法、数据结构为核心,主要用Python解题。
大头雨不愁
兴趣点:
知识图谱、深度学习、推荐算法
展开
-
LeetCode 刷题之旅(2020.06.16)——297. 二叉树的序列化与反序列化(难)
LeetCode 刷题之旅(2020.06.16)——297. 二叉树的序列化与反序列化(难)题目:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 /原创 2020-06-16 17:50:37 · 217 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.06.14)——1300. 转变数组后最接近目标值的数组和(中)
LeetCode 刷题之旅(2020.06.14)——1300. 转变数组后最接近目标值的数组和(中)题目:给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target =原创 2020-06-14 21:41:31 · 220 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.26)——287. 寻找重复数(中)
LeetCode 刷题之旅(2020.05.26)——287. 寻找重复数(中)题目:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的原创 2020-05-26 21:42:54 · 232 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.25)——146. LRU缓存机制(中)
LeetCode 刷题之旅(2020.05.25)——146. LRU缓存机制(中)题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写原创 2020-05-25 20:39:27 · 153 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.24)——4. 寻找两个正序数组的中位数(难)
LeetCode 刷题之旅(2020.05.24)——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 +原创 2020-05-24 18:42:36 · 247 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)
LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题模板:Python 3:# Definition for a binary原创 2020-05-22 21:31:29 · 283 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.14)——136. 只出现一次的数字(简)
LeetCode 刷题之旅(2020.05.14)——136. 只出现一次的数字(简)题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题模板:Python 3:class Solution: def singleNumber(self, nums:原创 2020-05-14 15:44:12 · 245 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.13)——102. 二叉树的层序遍历(中)
LeetCode 刷题之旅(2020.05.13)——102. 二叉树的层序遍历(中)题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题模板:Python 3:# Definition for a binary tre原创 2020-05-13 15:49:09 · 205 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.12)——155. 最小栈(简)
LeetCode 刷题之旅(2020.05.12)——155. 最小栈(简)题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3原创 2020-05-12 13:48:48 · 182 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.11)——50. Pow(x, n)(中)
LeetCode 刷题之旅(2020.05.11)——50. Pow(x, n)(中)题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数,原创 2020-05-11 15:48:08 · 140 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.10)——69. x 的平方根(中)
LeetCode 刷题之旅(2020.05.10)——69. x 的平方根(中)题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null原创 2020-05-10 16:09:04 · 190 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.09)——69. x 的平方根(简)
LeetCode 刷题之旅(2020.05.09)——69. x 的平方根(简)题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解题模板:Python 3:class Solution: def mySq原创 2020-05-09 17:30:24 · 214 阅读 · 1 评论 -
LeetCode 刷题之旅(2020.05.08)——221. 最大正方形(中)
LeetCode 刷题之旅(2020.05.08)——221. 最大正方形(中)题目:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4解题模板:Python 3:class Solution: def maximalSquare(...原创 2020-05-08 17:16:29 · 178 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.07)——572. 另一个树的子树(简)
LeetCode 刷题之旅(2020.05.07)——572. 另一个树的子树(简)题目:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 ...原创 2020-05-07 16:59:35 · 126 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.06)
LeetCode 刷题之旅(2020.05.06)——983. 最低票价(中)题目:在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一...原创 2020-05-06 19:18:18 · 210 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.05)
LeetCode 刷题之旅(2020.05.05)——98. 验证二叉搜索树(中)题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入:...原创 2020-05-05 18:35:15 · 155 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.04)——45. 跳跃游戏 II(难)
LeetCode 刷题之旅(2020.05.04)——45. 跳跃游戏 II(难)题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 ...原创 2020-05-04 17:04:07 · 243 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.03)
LeetCode 刷题之旅(2020.05.03)——53. 最大子序和(简)题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙...原创 2020-05-03 17:39:57 · 232 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.02)
LeetCode 刷题之旅(2020.05.02)——3. 无重复字符的最长子串(中)题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。...原创 2020-05-02 17:28:49 · 161 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.05.01)
LeetCode 刷题之旅(2020.05.01)——21. 合并两个有序链表(简)题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题模板:Python 3:# Definition f...原创 2020-05-01 15:33:29 · 182 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.30)
LeetCode 刷题之旅(2020.04.30)——202. 快乐数(简)题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。...原创 2020-04-30 19:37:05 · 179 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.29)——1095. 山脉数组中查找目标值(难)
LeetCode 刷题之旅(2020.04.29)——1095. 山脉数组中查找目标值(难)题目:(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如...原创 2020-04-29 23:57:13 · 168 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.28)
LeetCode 刷题之旅(2020.04.28)——面试题56 - I. 数组中数字出现的次数(中)题目:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4...原创 2020-04-28 20:12:17 · 163 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.27)
LeetCode 刷题之旅(2020.04.27)——33. 搜索旋转排序数组(中)题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0, 1, 2, 4, 5, 6, 7] 可能变为 [4, 5, 6, 7, 0, 1, 2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时...原创 2020-04-27 18:28:21 · 189 阅读 · 1 评论 -
LeetCode 刷题之旅(2020.04.26)——23. 合并K个排序链表(难)
LeetCode 刷题之旅(2020.04.26)——23. 合并K个排序链表(难)题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解题模板:Python...原创 2020-04-26 22:43:27 · 184 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.25)
LeetCode 刷题之旅(2020.04.25)——46. 全排列(中)题目:给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题模板:Python 3:class Solution: def...原创 2020-04-25 20:55:46 · 254 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.24)——面试题51. 数组中的逆序对(难)
LeetCode 刷题之旅(2020.04.24)——面试题51. 数组中的逆序对(难)题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000解题模板:class Solution: def re...原创 2020-04-24 21:05:25 · 186 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.23)
LeetCode 刷题之旅(2020.04.23)——面试题 08.11. 硬币(中)题目:硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10 输出:4...原创 2020-04-23 23:08:33 · 171 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.17)
LeetCode 刷题之旅(2020.04.17)——跳跃游戏(中)题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:...原创 2020-04-17 21:27:28 · 160 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.18)
LeetCode 刷题之旅(2020.04.18)——11. 盛最多水的容器(中)题目:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线...原创 2020-04-19 21:54:13 · 196 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.19)
LeetCode 刷题之旅(2020.04.19)——466. 统计重复个数(难)题目:由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,[“abc”, 3] = “abcabcabc”。如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,“abc” 可以从 “abdbec” 获得,但不能从 “acbbe...原创 2020-04-20 12:40:18 · 151 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.20)
LeetCode 刷题之旅(2020.04.20)——200. 岛屿数量(中)题目:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出:1示例 2...原创 2020-04-20 17:34:49 · 165 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.21)
LeetCode 刷题之旅(2020.04.21)——1248. 优美子数组(中)题目:给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] ...原创 2020-04-21 21:05:30 · 182 阅读 · 0 评论 -
LeetCode 刷题之旅(2020.04.22)
LeetCode 刷题之旅(2020.04.22)——199. 二叉树的右视图(中)题目:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ ...原创 2020-04-22 15:00:29 · 178 阅读 · 0 评论