- 博客(64)
- 收藏
- 关注
原创 (力扣每日一题)电话号码的字母组合
电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。解题思路方法一 BFS(1)第一个数字对应的字母先入队列,[“a”,“b”,“c”](2)依次遍历当前队列中的字母,将下一个digits的数字对应的字母和当前队列中的字母进行组合进入队列。代码class Solution: def letterCombinations(self, digits: str) -> List[
2020-08-26 18:41:55
352
原创 (力扣每日一题) 递增子序列
递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。解题思路方法一深度优先搜索+哈希表1、定义返回列表res保存所有递增子序列:2、深度优先搜索(dfs),参数:nums,tmp保存当前递增子序列:(1)如果当前递增子序列符合要求:res增加tmp(2)定义字典保存状态,避免重复!(3)inx, i循环nums的索引值对。a、如果当前值在以前已被遍历:跳出当前循环,开始下一次循环。b、如果i加入tmp可以形成递增子序列:i为键,1为值加入字典
2020-08-25 17:37:59
651
原创 (力扣每日一题)重复的子字符串
重复的子字符串给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。解题思路方法一 枚举法1、如果一个长度为 n 的字符串 s可以由它的一个长度为 n’的子串 s’重复多次构成,那么:n 一定是 n’ 的倍数;s ′ 一定是 s 的前缀;2、对于任意的 i∈[n ′,n),有 s[i]=s[i−n′]。也就是说,s 中长度为 n’ 的前缀就是 s’,并且在这之后的每一个位置上的字符 s[i],都需要与它之前的第 n’个字
2020-08-24 18:14:06
441
原创 (力扣每日一题)计数二进制子串
计数二进制子串给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。解题思路我们可以将字符串 s 按照 0 和 1 的连续段分组,存在counts 数组中,例如 s=00111011,可以得到这样的 counts 数组:counts={2,3,1,2}。这里counts 数组中两个相邻的数一定代表的是两种不同的字符。假设counts 数组中两个相邻的数字为 u 或者 v,它们对应着 u 个
2020-08-10 11:17:21
397
原创 (力扣每日一题)相同的树
相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。解释说明方法一 深度优先遍历如果两个二叉树都为空,则两个二叉树相同。如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同,若不相同则两个二叉树一定不同,若相同,再分别判断两个二叉树的左子树是否相同以及右子树是否相同。这是一个递归的过程,因此可以使用深度优先搜索,递归地判断两个二叉树是否相同。代码class
2020-08-07 12:26:27
321
原创 (力扣每日一题)魔术索引
魔术索引魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。代码class Solution: def findMagicIndex(self, nums: List[int]) -> int: if not nums: return -1 if nums[0]==0:retur
2020-07-31 22:14:05
169
原创 (力扣每日一题)整数拆分
整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。动态规划1、对于的正整数 n,当 n≥2 时,可以拆分成至少两个正整数的和。2、令 kk是拆分出的第一个正整数,则剩下的部分是 n-k,n-k 可以不继续拆分,或者继续拆分成至少两个正整数的和。3、由于每个正整数对应的最大乘积取决于比它小的正整数对应的最大乘积,因此可以使用动态规划求解。4、开数组创建数组 dp,其中 dp[i] 表示将正整数 i 拆分成至少两个正整数的和之后,这些
2020-07-30 15:17:11
1107
原创 (力扣每日一题)寻宝
寻宝(由于此题用python效率较低主要用java解题)我们得到了一副藏宝图,藏宝图显示,在一个迷宫中存在着未被世人发现的宝藏。迷宫是一个二维矩阵,用一个字符串数组表示。它标识了唯一的入口(用 ‘S’ 表示),和唯一的宝藏地点(用 ‘T’ 表示)。但是,宝藏被一些隐蔽的机关保护了起来。在地图上有若干个机关点(用 ‘M’ 表示),只有所有机关均被触发,才可以拿到宝藏。要保持机关的触发,需要把一个重石放在上面。迷宫中有若干个石堆(用 ‘O’ 表示),每个石堆都有无限个足够触发机关的重石。但是由于石头太重,
2020-07-29 11:51:11
729
原创 (力扣每日一题)二叉树的最大深度
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。解题思路1、如果知道了左子树和右子树的最大深度 l 和 r,那么该二叉树的最大深度即为 max(l,r)+12、左子树和右子树的最大深度又可以以同样的方式进行计算。3、因此我们在计算当前二叉树的最大深度时,可以先递归计算出其左子树和右子树的最大深度,然后在 O(1)时间内计算出当前二叉树的最大深度。递归在访问到空节点时退出。...
2020-07-28 18:45:30
327
原创 (力扣每日一题)判断子序列
判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。解题思路双指针1、s 是否是 t 的子序列,因此只要能找到任意一种 s 在 t中出现的方式,即可认为 s 是 t 的
2020-07-27 11:11:08
894
原创 (力扣每日一题)分割数组的最大值
分割数组的最大值给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)解题思路方法一动态规划1、令 f[i][j]表示将数组的前 i个数分割为 j 段所能得到的最大连续子数组和的最小值。2、进行状态转移时,我们可以考虑第 j段的具体范围,即我们可以枚举 k,其中前 k个数被分割为 j-1 段,而第 k+1到第 i 个
2020-07-25 14:20:27
700
原创 (力扣每一题)除数博弈
除数博弈爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。解题思路归纳法1、最终结果应该是占到 2 的赢,占到 1 的输;2、若当前为奇数,奇数的约数只能
2020-07-24 11:30:59
202
原创 (力扣每日一题)最小路径和
最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。解题思路动态规划1、由于路径的方向只能是向下或向右,因此网格的第一行的每个元素只能从左上角元素开始向右移动到达。2、网格的第一列的每个元素只能从左上角元素开始向下移动到达,此时的路径是唯一的。3、因此每个元素对应的最小路径和即为对应的路径上的数字总和。4、对于不在第一行和第一列的元素,可以从其上方相邻元素向下移动一步到达,或者从其左方相邻元素
2020-07-23 08:23:03
519
原创 (力扣每日一题)不同的二叉搜索树 II
不同的二叉搜索树 II给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。提示:0 <= n <= 8解题思路二叉搜索树有以下几个特点:(1)、左边的小于当前;(2)、右边的大于当前;(3)、没有重复的值。为了符合二叉搜索树的这几个特点,我们需要知道当前的范围。(要知道开头和结尾;最开始是1和n)1、首先定义一个字典保存已遍历的参数和结果以免重复。2、特殊情况判断:如果n == 0,返回[],如果不判断则会返回[None](执行递归代码会直接返回,因为
2020-07-21 18:15:21
206
原创 (力扣每日一题)两数之和 II - 输入有序数组
两数之和 II - 输入有序数组给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。解题思路方法一:二分查找在数组中找到两个数,使得它们的和等于目标值,可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数
2020-07-20 11:05:58
276
原创 (力扣每日一题)戳气球
戳气球有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[-1] = nums[n] = 1,但注意它们不是真实
2020-07-19 16:03:44
382
原创 (力扣每日一题)交错字符串
交错字符串给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。解题思路动态规划(来源力扣)(1)开数组我们使用dp[i][j]表示s1的前i个字符和s2的前j个字符是否能构成s3的前i+j个字符。首先,dp[0][0]一定是True。(2)初始化1、初始化s1,s2,s3的长度分别为len1,len2,len32、若len1+len2!=len3,表示一定不能构成交错字符串,返回False3、初始化dp为(len1+1)*(len2+1)的Fals
2020-07-18 16:11:15
330
原创 (力扣每日一题)搜索插入位置
搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。解题思路1.对极端情况进行判断,当target比数组中的任意一个数都小或都大;2.对target是否在数组中进行判断3.当在数组中的时候,找到其下标位置(默认数组为无重复数组)4.当没有在数组中的时候,找到第一个数字比target大的元素,这个元素的下标位置就是target插入数组的位置。代码class Solution:
2020-07-17 13:03:11
350
原创 (力扣每日一题)判断二分图
判断二分图给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: graph[i] 中不存在i,并且graph[i]中没有重复的值。解题思路1、设任意两个节点 u 和 v,如果它们之间有
2020-07-16 13:12:55
605
原创 (力扣每日一题)不同的二叉搜索树
不同的二叉搜索树给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?解题思路动态规划1、假设n个节点存在2、令G(n)的从1到n可以形成二叉排序树个数3、令f(i)为以i为根的二叉搜索树的个数即有:G(n) = f(1) + f(2) + f(3) + f(4) + … + f(n)4、n为根节点,当i为根节点时,其左子树节点个数为[1,2,3,…,i-1],右子树节点个数为[i+1,i+2,…n],所以当i为根节点时,其左子树节点个数为i-1个,右子树节点为n-i,即f(
2020-07-15 12:25:26
606
原创 (力扣每日一题)三角形最小路径和
三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。在本题中,给定的三角形的行数为 n,并且第 i行(从 0 开始编号)包含了 i+1个数。如果将每一行的左端对齐,那么会形成一个等腰直角三角形,如下所示:解题思路动态规划1、用 f[i][j]] 表示从三角形顶部走到位置 (i, j)的最小路径和。这里的位置 (i,j) 指的是三角形中第 i 行第
2020-07-14 19:43:24
413
原创 (力扣每日一题)两个数组的交集 II
两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。解题思路方法一:哈希表1、选择用哈希表存储每个数字出现的次数。原因:同一个数字在两个数组中都可能出现多次,但我们最终选择该数字在交集中出现的次数为该数字在两个数组中出现次数的最小值。2、具体步骤:(1)、选择两个数组中长度较小的为第一个数组进行哈希映射。(2)、遍历第一个数组,并在哈希表中记录第一个数组中的每个数字以及对
2020-07-13 14:02:13
712
原创 机器学习之数学基础(三) 矩阵和线性代数
文章目录矩阵以SVD为例SVD的用法举例SVD代码奇异值分解—效果线性代数定义方阵的行列式矩阵以SVD为例SVD的用法举例SVD代码奇异值分解—效果线性代数定义方阵的行列式
2020-07-12 15:54:10
498
原创 (力扣每日一题) 地下城游戏
地下城游戏一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将
2020-07-12 12:47:04
557
原创 (力扣每日一题)计算右侧小于当前元素的个数
计算右侧小于当前元素的个数给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。
2020-07-11 23:34:22
729
原创 (力扣每日一题). 最佳买卖股票时机含冷冻期
最佳买卖股票时机含冷冻期给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。解题思路定位思考「买入」为负收益,而「卖出」为正收益。在初入股市时,你只有「买入」的权利,只能获得负收益。而当你「买入」之后,你就有了「卖出」的权利,可以获得正收益。显然,我们需要尽
2020-07-10 23:10:37
353
原创 (力扣每日一题)恢复空格
恢复空格哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。解题思路动态规划1、
2020-07-09 13:47:56
258
原创 机器学习之数学基础(二) 概率论与贝叶斯试验
文章目录概率公式统计数字的概率本福特定律条件概率与全概率公式贝叶斯公式概率分布两点分布二项分布泊松分布均匀分布指数分布正态分布常见分布总结Beta分布事件的独立性期望期望的类型和性质方差协方差协方差定义和性质协方差的意义协方差和独立、不相关的关系协方差的上界Pearson相关系数协方差矩阵切比雪夫不等式大数定律伯努利定理中心极限定理概率公式统计数字的概率本福特定律条件概率与全概率公式贝叶斯公式举例贝叶斯公式扩展概率分布两点分布二项分布泊松分布均匀分布指数分布
2020-07-08 20:25:27
276
原创 (力扣每日一题)跳水板
跳水板你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。解题思路(来源力扣官解)1、先考虑特殊情况当k = 0时,返回[ ],当shorter = longer 时,返回[ k*shorter ]2、图解分析(研究规律得出使用等差数列方法):设k = 3,当shorter = 1,longer = 1 时的返回值。当longer
2020-07-08 15:30:07
894
原创 (力扣每日一题)路径总和
路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。解题思路1、使用广度优先搜索的方式,记录从根节点到当前节点的路径和。2、使用两个队列,分别存储将要遍历的节点,以及根节点到这些节点的路径和。代码class Solution: def hasPathSum(self, root: TreeNode, sum: int) -> bool: if not root:
2020-07-07 22:44:10
231
原创 (力扣每日一题)不同路径 II
不同路径 II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。解题思路动态规划1、第[i, j]个格子的总数应该等于[i - 1, j] + [i, j -1]2、dp[i][j] 表示 到格子
2020-07-06 15:39:39
297
原创 (力扣每日一题) 通配符匹配
通配符匹配给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘’ 的通配符匹配。‘?’ 可以匹配任何单个字符。'’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”p =
2020-07-05 22:59:31
406
原创 (力扣每日一题)最长有效括号
最长有效括号给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”解题思路从前往后遍历字符串一、入栈条件为:1.栈为空2.当前字符是’(’3.栈顶符号位’)’因为三种条件都没办法消去成对的括号。二、计算结果:符合消去成对括号时,拿当前下标减去栈顶下标即可代码class Solution:
2020-07-04 22:59:14
316
原创 (力扣每日一题)将有序数组转换为二叉搜索树
将有序数组转换为二叉搜索树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9/ /-10 5解题思路1、由题意得知数组是按照升序排列的有序数列,所以可以确保数组是二叉搜索树的中序遍历序列。(二叉搜索树的中
2020-07-03 17:54:10
290
原创 (力扣每日一题)有序矩阵中第K小的元素
最长重复子数组给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100解题思路1、利用滑动窗口将两个数值进行对齐,最长重复子数组在 A 和 B 中的开始位置相同,我们就可以对这两个数组进行一次遍历,得到子数组的长度。2、对齐的方式有两类:第一类为 A 不变,B 的首元素与 A 中的某个元素对齐;第二类为 B 不变,A 的首元素与 B 中的某个元素对齐
2020-07-03 16:37:05
216
原创 (力扣每日一题)最长重复子数组
最长重复子数组给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100解题思路1、利用滑动窗口将两个数值进行对齐,最长重复子数组在 A 和 B 中的开始位置相同,我们就可以对这两个数组进行一次遍历,得到子数组的长度。2、对齐的方式有两类:第一类为 A 不变,B 的首元素与 A 中的某个元素对齐;第二类为 B 不变,A 的首元素与 B 中的某个元素对齐
2020-07-03 16:35:25
333
原创 (力扣每日一题)用两个栈实现队列
用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )解题思路1、栈无法实现队列功能: 栈底元素(对应队首元素)无法直接删除,需要将上方所有元素出栈。2、双栈可实现列表倒序: 设有含三个元素的栈 A = [1,2,3]和空栈 B = []。若循环执行 A 元素出栈并添加入栈 B ,直到栈 A 为空,则 A=[] , B
2020-07-03 16:34:00
461
原创 (力扣每日一题)数组中第K个最大的元素
数组中第K个最大的元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。解题思路用堆排序来解决这个问题——建立一个大根堆,做 k - 1次删除操作后堆顶元素就是我们要找的答案。1、构建一棵完全二叉树,从第一个非叶子节点为根节点的子树开始,将其调整为大根堆。2、调整倒数第二个非叶子节点作为根节点的子树,调整倒数第三个非叶子节点作为根节点的子树…调整倒数第K个非叶子节点作为根节点的子树,直到调整完成。3、删除k-1次堆顶元素(
2020-07-03 16:31:12
313
原创 (力扣每日一题)两数之和
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路通过字典建立哈希表的方式把数据输入判断。代码class Solution: def twoSum(self, n
2020-07-03 16:28:11
217
原创 (力扣每日一题)缺失的第一个正数
文章目录1、缺失的第一个正数两数之和1、缺失的第一个正数给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。要求:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。(时间复杂度为 O(N)O(N),空间复杂度为 O(1)。)解题思路方法一:哈希表1、将数组所有的数放入哈希表,随后从 11 开始依次枚举正整数,并判断其是否在哈希表中。2、对于一个长度为 N 的数组,其中没有出现的最小正整数只能在 [1, N+1]中。3、将数组设计成哈希表的思路:对数组进行遍历,对于
2020-07-01 14:44:34
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人