自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试题 04.06. 后继者

题目描述:设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 1 2/ \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \ 3 6 / \ 2 4/ 1输出: null...

2020-11-23 22:05:52 139

原创 739. 每日温度

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

2020-09-27 09:34:52 257

原创 105. 从前序与中序遍历序列构造二叉树

题目描述:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路:递归class Solution: def buildTree(self, preorder: List[int], inorder: List[...

2020-09-25 17:00:53 217

原创 106. 从中序与后序遍历序列构造二叉树

题目描述:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路:递归(注意这里要先构建右子树)class Solution: def buildTree(self, inorder: List[int], p...

2020-09-25 16:59:04 143

原创 404. 左叶子之和

题目描述:计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24解题思路:深度优先搜索对于节点node,其左叶子节点可以表示如下:node.leftand (notnode.left.leftandnotnode.left.right)对整棵树进行遍历,当我们遍历到节点\textit{node}node时,如果它的左子节点是一个叶子...

2020-09-19 19:18:07 94

原创 199. 二叉树的右视图

题目描述:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---解题思路:层序遍历:每一层访问到的最后一个节点即为能看到的最右侧元素class Solution: def ...

2020-09-16 21:30:37 136

原创 345. 反转字符串中的元音字母

题目描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入:"hello"输出:"holle"示例 2:输入:"leetcode"输出:"leotcede"解题思路:先将字符串中元音字母换为#,并将其存到另一个字符串S'中,最后再将S‘倒序更换字符串中的#class Solution: def reverseVowels(self, s: str) -> str: vowel=['a','e','i','o','u',

2020-09-13 21:36:04 170

原创 434. 字符串中的单词数

题目描述:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。解题思路:遍历整个字符串,检测每个下标,若该下标前为空格(或者为初始下标),且自身不为空格,则其为单词的下标class Solution: def countSegments(self,

2020-09-13 21:17:22 125

原创 58. 最后一个单词的长度

题目描述:给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: "Hello World"输出: 5输入: "Hello "输出: 5解题思路:字符串遍历,先将末尾的空格过滤掉,再从后向前遍历直到遍历到头或者遇到空格为止,即为最后一个单词的长度class S...

2020-09-13 20:50:43 380

原创 459. 重复的子字符串

题目描述:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)解题思路:枚举: 子串

2020-09-13 20:25:34 123

原创 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: def coinChange(self,...

2020-09-06 21:58:19 102

原创 leetcode 连续数列

题目描述:给定一个整数数组,找出总和最大的连续数列,并返回总和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题思路:动态规划状态转移方程:dp[i]=max(dp[i-1]+nums[i],nums[i])dp[i]表示以i结尾的最大连续子序列,每一个元素都可以选择和前i个子序列相连或者不相连。class Solution: def maxSubArray(self, n

2020-09-06 21:19:54 503

原创 leetcode 322. 零钱兑换

题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1解题思路:动态规划若所需的最少的硬币个数,则应优先使用面值大的硬币,因此首先对数组进行从大到小排序。...

2020-08-26 10:53:17 147

转载 L1、L2正则化来源推导

L1、L2正则化来源推导L1L2的推导可以从两个角度:带约束条件的优化求解(拉格朗日乘子法) 贝叶斯学派的:最大后验概率1.1 基于约束条件的最优化对于模型权重系数w的求解释通过最小化目标函数实现的,也就是求解:首先,模型的复杂度可以用VC来衡量。通常情况下,模型VC维与系数w的个数成线性关系:即:w数量越多,VC越大,模型越复杂为了限制模型的复杂度,我们要降低VC,自然的思路就是降低w的数量,即:让w向量中的一些元素为0或者说限制w中非零元素的个数。我们可以在原优化问题

2020-08-25 20:35:10 1091

原创 leetcode 63. 不同路径 II

题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?解题思路:同62题,当遇到障碍时路径数置0。class Solution(object): def uniquePathsWithObstacles(self, obstacleGrid): "

2020-08-25 19:47:34 140

原创 生成模型VS判别模型

监督学习方法可以分为生成方法和判别方法,所学习得到的模型分别为生成模型和判别模型。生成模型定义生成方法由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型: 典型的生成模型有朴素贝叶斯,隐马尔可夫模型生成模型为什么叫生成模型?因为模型表示了给定输入X和产生输出Y的生成关系,即联合概率分布P(X,Y),拥有一组生成新数据的能力。判别模型定义判别方法由数据直接学习决策函数f(X)或者条件概...

2020-08-25 19:44:20 352

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

题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true解题思路: 设计一个递归函数来递归判断,考虑以 root 为根的子树,判断子树中所有节点的值是否都在 (l,r)的范围内(注意是开区间)。如果 root 节点的值 val 不在 (l,r...

2020-08-21 17:22:40 141

原创 leetcode 62. 不同路径

题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?解题思路:动态规划由于机器人每次只能向下或者向右移动一步,所以机器人移动到当前网格处(i,j)只能从上一行(i-1,j)或前一列(i,j-1)移动得到,因此到达该网格处的路径个数为移动到(i-1,j)和(i,j-1)对应的路径数之和。考虑特殊情况,处于第一行

2020-08-21 15:51:59 144

原创 leetcode 22. 括号生成

题目描述数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]解题思路回溯法通过跟踪到目前为止放置的左括号和右括号的数目,如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。cl...

2020-08-19 21:07:26 217

原创 leetcode 647. 回文子串

题目描述:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"解题思路:动态规划一个字符串是回文串,它的首尾字符相同,且剩余子串也是一个回文串。因此,求一个字符串是否是回文串可以分

2020-08-19 20:14:44 128

原创 leetcode 337. 打家劫舍 III

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

2020-08-05 15:41:41 111

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

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

2020-07-31 10:52:05 83

原创 leetcode 343. 整数拆分

题目描述:给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。说明: 你可以假设n不小于 2 且不大于 58。解题思路:动态规划对于的正整数 n,当n>=2时,令 i是拆分出的第一个正整数,则剩下的部分是 n-i,n-i 可...

2020-07-30 19:57:31 116

原创 leetcode 17. 电话号码的字母组合

题目描述:给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。解题思路:递归+回溯思想class Solution(object): def letterCombinatio..

2020-07-29 20:20:13 97

原创 leetcode 6. Z 字形变换

题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例1:输...

2020-07-28 22:15:26 140

原创 leetcode 104. 二叉树的最大深度

题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7解题思路:方法一:递归# Definition for a binary tree node.# class TreeNode(object):# def __init__(self,...

2020-07-28 21:24:01 85

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

题目描述:给你一个长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在O(n) 时间复杂度内完成此题。解题思路:直观上来看,先计算给定数组所有元素的乘积,然后对数组...

2020-07-27 12:27:15 159

原创 leetcode 3. 无重复字符的最长子串

题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。解题思路:滑动窗口方法一:class Solution: def lengthOfLongestSubstring(self, s: str) -> int: maxlen,r,l=0,0,len(s) res=[] for ...

2020-07-26 17:19:41 102

原创 获取文件路径的最后一级

import osfilename='./data/train'os.path.split(filename)[-1]

2020-07-25 13:15:01 1951

原创 leetcode 1025. 除数博弈

题目描述:爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字N。在每个玩家的回合,玩家需要执行以下操作:选出任一x,满足0 < x < N 且N % x == 0。用 N - x替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回True,否则返回 false。假设两个玩家都以最佳状态参与游戏。示例 1:输入:2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。示例 2...

2020-07-24 22:04:38 88

原创 leetcode 746. 使用最小花费爬楼梯

题目描述:数组的每个索引作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。示例 2:输入: cost = [1...

2020-07-23 21:28:25 96

原创 leetcode 392. 判断子序列

题目描述:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:s = "abc", t = "ahbgdc"返回true.解题思路:方法一:暴力求解..

2020-07-23 20:07:39 100

原创 leetcode 41. 缺失的第一个正数

题目描述:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3解题思路:先对数组进行排序 然后从大于0的位置开始遍历数组如果存在相邻数值相减大于1,那么返回前一个数值+1,如果遍历完也不存在这种情况,那么缺失值为数组最后一个元素值+1class Solution(object): def firstMissingPositive(self, nums): """ :type nums: .

2020-07-23 19:16:28 104

原创 leetcode 64. 最小路径和

题目描述:给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:动态规划class Solution(object): def minPathSum(self, grid): """ :type g...

2020-07-23 16:31:31 117

原创 leetcode 28:实现 strStr() 函数。

题目描述:给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2解题思路:方法一:子串逐一匹配将长度为 L 的滑动窗口沿着 haystack 字符串逐步移动,并将窗口内的子串与 needle 字符串相比较,时间复杂度为O((N−L)L)class Soluti...

2020-07-22 20:36:39 173

原创 leetcode. 旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0解题思路:方法一:线性查找 易知最小值所在的地方一定是数值阶跃的位置,因此可以直接对数组进行线性查找,若某处值小于前一个值,则该值即为数...

2020-07-22 20:07:09 123

空空如也

空空如也

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

TA关注的人

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