自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 leetcode 16. 最接近的三数之和

给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3<= nums[i]<= 10^3-10^4&...

2020-09-18 21:57:24 107

原创 leetcode 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)/2 = 2.5class Solution(object): def ...

2020-09-16 15:17:30 113

原创 leetcode 739. 每日温度

请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000]。每个气温的值的均为华氏度,都是在[30, 100]范围内的整数。class Solution(objec...

2020-09-15 17:23:11 125

原创 leetcode 647. 回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"中心扩散class Solution(object): def countSubstrings(self, s):

2020-09-15 14:51:43 80

原创 leetcode 406. 根据身高重建队列

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]解法class Solution(object): def reconstructQueu

2020-09-14 17:08:31 84

原创 leetcode 560. 和为K的子数组

给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数k的范围是[-1e7, 1e7]。前缀和class Solution(object): def subarraySum(self, nums, k): ...

2020-09-14 16:41:38 114

原创 leetcode 438. 找到字符串中所有字母异位词

给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。示例1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。起始索引等于 6 的子串是 "bac", 它是 "ab...

2020-09-12 15:04:49 151

原创 leetcode 416. 分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100 数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.class Solution(object): def canPartit..

2020-09-12 11:45:59 124

原创 leetcode 399. 除法求值

给出方程式A / B = k, 其中A 和B 均为用字符串表示的变量,k 是一个浮点型数字。根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回-1.0。示例 :给定a / b = 2.0, b / c = 3.0问题: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ?返回[6.0, 0.5, -1.0, 1.0, -1.0 ]输入为: vector<pair<string, string>&...

2020-08-18 05:40:58 78

原创 leetcode 394. 字符串解码

给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4]的输入。示例 1:输入:s = "3[a]2[bc]"输出:"aaabcbc"示例 2:输入...

2020-08-18 02:45:44 119

原创 leetcode 338. 比特位计数

给定一个非负整数num。对于0 ≤ i ≤ num范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的__buil...

2020-08-05 04:45:48 99

原创 leetcode 337. 打家劫舍 III

在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \ ...

2020-08-05 02:20:52 79

原创 leetcode 322. 零钱兑换

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1广度优先搜索class Solution(object): def coinChange(self, coi...

2020-08-05 00:38:04 84

原创 leetcode 309. 最佳买卖股票时机含冷冻期

给定一个整数数组,其中第i个元素代表了第i天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]动态规划class Solution(object): def...

2020-08-04 08:08:38 122

原创 leetcode 300. 最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。进阶: 你能将算法的时间复杂度降低到O(n log n) 吗?动态规划class Solution(object): def lengthOfLIS(self, nums)...

2020-08-03 07:53:52 100

原创 leetcode 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) 。数组中只有一个重复的数字,但它可能不止重复出现一次。哈希表class Solution(obje...

2020-08-03 06:19:12 101

原创 leetcode 279. 完全平方数

给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.广度优先搜索class Solution(object): def numSquares(self, n): """ :type n: int ...

2020-08-03 05:14:08 75

原创 253. 会议室 II

给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。示例 1:输入: [[0, 30],[5, 10],[15, 20]]输出: 2示例 2:输入: [[7,10],[2,4]]输出: 1最小堆class Solution(object): def minMeetingRooms(sel

2020-08-01 05:43:15 310

原创 leetcode 240. 搜索二维矩阵 II

编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target=5,返回true。...

2020-08-01 04:43:35 91

原创 leetcode 238. 除自身以外数组的乘积

给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目...

2020-08-01 02:05:29 73

原创 leetcode 236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 ...

2020-08-01 00:01:34 73

原创 leetcode 221. 最大正方形

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4动态规划class Solution(object): def maximalSquare(self, matrix): """ :type matrix: List[List[str]] :rtype: int """

2020-07-31 05:19:37 77

原创 leetcode 215. 数组中的第K个最大元素

在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4归并排序class Solution(object): def findKthLargest(self, nums, k): """ :type nums: List[...

2020-07-31 04:26:35 150

原创 leetcode 208. 实现 Trie (前缀树)

实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app"); // 返回 truetrie.insert("app"); trie.search("app");...

2020-07-30 06:45:53 74

原创 leetcode 207. 课程表

你这个学期必须选修 numCourse 门课程,记为0到numCourse-1 。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[1,0],[0,1]]输出: fal...

2020-07-30 05:36:43 78

原创 leetcode 200. 岛屿数量

给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出:1示例2:输入:[['1','1','0','0','0'],...

2020-07-30 03:51:32 256

原创 leetcode 152. 乘积最大子数组

给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。动态规划class Solution(object): def maxProduct(self, nums): """ ...

2020-07-30 01:53:09 55

原创 leetcode 148. 排序链表

在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5递归(自顶向下)# Definition for singly-linked list.# class ListNode(object):# def __init__...

2020-07-30 00:13:13 69

原创 leetcode 146. LRU缓存机制

运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶:你是否可以在...

2020-07-29 03:31:08 71

原创 leetcode 142. 环形链表 II

给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos =...

2020-07-29 00:59:35 50

原创 leetcode 139. 单词拆分

给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDic...

2020-07-28 07:02:58 81

原创 leetcode 114. 二叉树展开为链表

给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6递归法# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val...

2020-07-28 04:36:37 51

原创 leetcode 105. 从前序和中序遍历构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7递归法# Definition for a binary tree node.# class TreeNode(object):# def __init__(self...

2020-07-28 00:49:21 87

原创 leetcode 102. 二叉树的层序遍历

给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]BFS# Definition for a binary tree node.# class TreeNode(object):# def __init__(...

2020-07-28 00:00:18 53

原创 leetcode 98. 验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但...

2020-07-27 23:39:16 64

原创 leetcode 96. 不同的二叉搜索树

给定一个整数n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 ...

2020-07-27 08:25:08 103

原创 leetcode 94. 二叉树的中序遍历

给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]递归法:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right .

2020-07-27 07:14:56 71

原创 leetcode 79. 单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word = "ABCB", 返回...

2020-07-27 05:58:26 67

原创 leetcode 78. 子集

给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]回溯(递归):class Solution(object): def subsets(self, nums): """ :type nums: List[in...

2020-07-27 05:18:35 69

原创 leetcode 75. 颜色分类

给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅使用常数空..

2020-07-24 22:40:36 75

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除