自定义博客皮肤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)
  • 收藏
  • 关注

原创 动手深度学习-笔记2

小白知识点训练误差和泛化误差训练误差:模型在训练数据集上表现出的误差泛化误差:模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。验证数据集、测试数据集和训练数据集三者的功能训练集:模型训练的过程其实就是在求参数,我们通过训练集来分别对模型进行训练,学习到每一个模型中对应的最优的参数。验证集:我们要考察不同结构的模型在数据上的优劣程度,而模...

2020-02-19 20:44:08 285

原创 动手深度学习-笔记1

知识点损失函数中的解分为两类:解析解:误差最小化问题的解可以直接用公式表达出来数值解:通过优化算法有限次迭代模型参数来尽可能降低损失函数的值优化函数的两个步骤:初始化模型参数,一般来说使用随机初始化。我们在数据上迭代多次,通过在负梯度方向移动参数来更新每个参数.两个向量相加的两种方法:向量相加的一种方法是,将这两个向量按元素逐一做标量加法。timer = Timer(...

2020-02-14 20:22:00 218

原创 20. 有效的括号(Valid Parentheses)

20. 有效的括号(Valid Parentheses)题解栈复杂度分析PythonJava(待完成)题解有效的括号问题,一般使用栈来解决,若出现一个右括号,判断栈顶的是否为相匹配的左括号,是则出栈,否则入栈。遇到左括号就入栈。显然,有效的括号一定保证最终栈为空,若出现一个右括号,栈已空,则一定无效。栈初始化括号对应关系dict={")":"(","}":"{","]":"["}dic...

2019-12-27 13:49:36 280 1

原创 17. 电话号码的字母组合(Letter Combinations of a Phone Number)

17. 电话号码的字母组合(Letter Combinations of a Phone Number)题解回溯复杂度分析PythonJava(待完成)题解第一时间想到回溯,因为这种找全部的解,常规都是使用回溯回溯初始化词典phone={"2":["a","b","c"],⋯ }phone=\{"2":["a","b","c"],\cdots\}phone={"2":["a","b",...

2019-12-26 23:25:15 226

原创 14. 最长公共前缀(Longest Common Prefix)

14. 最长公共前缀(Longest Common Prefix)题解水平扫描复杂度分析PythonJava(待完成)Pythonic的解法复杂度分析PythonJava(待完成)题解水平扫描想法:取字符串数组中的第一个字符串为resresres,逐个和剩下的字符串比较并更新resresres特判,若字符串数组为空,返回"""""",或只有一个字符串,返回strs[0]strs[0]...

2019-12-26 22:27:15 115

原创 13. 罗马数字转整数(Roman to Integer)

13. 罗马数字转整数(Roman to Integer)题解一次遍历复杂度分析PythonJava(待完成)题解借助哈希表保存所有的罗马字符,包括’I’:1, ‘IV’:4, ‘V’:5, ‘IX’:9, ‘X’:10, ‘XL’:40, ‘L’:50, ‘XC’:90, ‘C’:100, ‘CD’:400, ‘D’:500, ‘CM’:900, ‘M’:1000。一次遍历初始化词典...

2019-12-26 21:42:14 252

原创 12. 整数转罗马数字(Integer to Roman)

12. 整数转罗马数字(Integer to Roman)题解贪心算法复杂度分析PythonJava(待完成)题解显然的想法,和凑零钱的问题一样,每次选择最大的,可以保证用的罗马字符最少且最终的组合唯一。贪心算法初始化词典numtochar={1:"I",⋯ ,1000:"M"}numtochar=\{1:"I",\cdots,1000:"M"\}numtochar={1:"I",⋯,...

2019-12-26 20:19:29 148

原创 6. Z 字形变换(ZigZag Conversion)

6. Z 字形变换(ZigZag Conversion)题解标志转向复杂度分析PythonJava(待完成)题解标志转向特判,若行数numRows<2numRows<2numRows<2,返回sss初试化res=["",⋯ ,""]res=["",\cdots,""]res=["",⋯,""],长度为numRowsnumRowsnumRows,res[i]res[...

2019-12-25 22:10:52 267

原创 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)

3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)题解滑动窗口复杂度分析PythonJava(待完成)题解滑动窗口初始化集合memomemomemo保存当前无重复字符的子串初始化结果max_len=0max\_len=0max_len=0和当前子串的长度cur_len=0cur\_len=0cur_len=0,...

2019-12-25 20:29:05 112

原创 416. 分割等和子集(Partition Equal Subset Sum)

416. 分割等和子集(Partition Equal Subset Sum)题解动态规划复杂度分析PythonJava(待完成)题解本题的难点,将其转化为0−10-10−1背包问题。动态规划由二进制的两条性质得到递推公式:dp[i]={dp[i−1]+1i为奇数dp[i//2]i为偶数dp[i]=\left\{\begin{array}{ll}{dp[i-1]+1} & {i为...

2019-12-17 14:26:24 168

原创 338. 比特位计数(Counting Bits)

338. 比特位计数(Counting Bits)题解动态规划复杂度分析PythonJava(待完成)题解本题主要考察二进制的自身特性。二进制的两个特性:奇数的二进制中1的个数=它上一位偶数的二进制中1的个数+1如:(3)10=(11)2,(2)10=(10)2(3)_{10}=(11)_{2},(2)_{10}=(10)_{2}(3)10​=(11)2​,(2)10​=(10)2​...

2019-12-17 10:36:11 232

原创 322. 零钱兑换(Coin Change)

322. 零钱兑换(Coin Change)题解记忆化回溯(自顶向下)复杂度分析PythonJava(待完成)动态规划(自下而上)复杂度分析PythonJava(待完成)题解记忆化回溯(自顶向下)如上图,在回溯过程中,将中间结果保存下来,这样可将复杂度降低到O(n)O(n)O(n)。初始化记忆词典memo={0:0}memo=\{0:0\}memo={0:0},表示0元的组成种类为0...

2019-12-16 16:54:42 306

原创 304. 二维区域和检索 - 矩阵不可变(Range Sum Query 2D - Immutable)

303. 区域和检索 - 数组不可变(Range Sum Query - Immutable)题解缓存+动态规划复杂度分析PythonJava(待完成)题解缓存+动态规划同样借助于缓存的思想:如图所示:若求蓝色区域内的元素和,等于蓝色区域右下角到(0,0)(0,0)(0,0)处的累加和去掉红色绿色和绿色部分的累加和。红色部分+绿色部分=矩阵左上角(0,0)(0,0)(0,0)到红色部分...

2019-12-13 15:00:56 93

原创 303. 区域和检索 - 数组不可变(Range Sum Query - Immutable)

303. 区域和检索 - 数组不可变(Range Sum Query - Immutable)题解缓存+动态规划复杂度分析PythonJava(待完成)题解每次调用函数计算一次都需要O(n)O(n)O(n)复杂度,因此借助缓存来保存区域和。若使用二维dpdpdp,dp[i][j]dp[i][j]dp[i][j]表示iii到jjj的区域和,需要O(n2)O(n^{2})O(n2)空间复杂度。...

2019-12-13 14:30:19 94

原创 300. 最长上升子序列(Longest Increasing Subsequence)

300. 最长上升子序列(Longest Increasing Subsequence)题解动态规划复杂度分析PythonJava(待完成)动态规划+二分查找复杂度分析PythonJava(待完成)题解动态规划dp[i]dp[i]dp[i]表示到当前位置的最长上升子序列的长度。特判,若数组为空,返回0初试化dp=[1,1,⋯ ,1]dp=[1,1,\cdots,1]dp=[1,1...

2019-12-12 22:03:17 98

原创 279. 完全平方数(Perfect Squares)

279. 完全平方数(Perfect Squares)题解动态规划复杂度分析PythonJava(待完成)动态规划+空间优化复杂度分析PythonJava(待完成)题解动态规划dp[i]dp[i]dp[i]表示iii最少可以由几个平方数构成。初试化dp=[0,1,2,⋯ ,n]dp=[0,1,2,\cdots,n]dp=[0,1,2,⋯,n],长度为n+1n+1n+1。遍历dpdpdp...

2019-12-12 14:25:00 312

原创 221. 最大正方形(Maximal Square)

221. 最大正方形(Maximal Square)题解动态规划复杂度分析PythonJava(待完成)动态规划+空间优化复杂度分析PythonJava(待完成)题解动态规划dp[i][j]dp[i][j]dp[i][j]表示以第iii行,第jjj列处为右下角的最大正方形的边长。仅当该位置为111时,才有可能存在正方形。且递推公式为:dp[i][j]=min(dp[i−1][j−1],d...

2019-12-08 15:05:17 442

原创 198. 打家劫舍(House Robber)

198. 打家劫舍(House Robber)题解动态规划复杂度分析PythonJava(待完成)题解动态规划dp[i]dp[i]dp[i]表示到第iii个房屋的偷窃最高金额。显然,递推公式为:dp[i]=max(dp[i−2]+nums[i−1],dp[i−1])dp[i]=max(dp[i-2]+nums[i-1],dp[i-1])dp[i]=max(dp[i−2]+nums[i−1]...

2019-12-07 19:35:59 117

原创 174. 地下城游戏(Dungeon Game)

174. 地下城游戏(Dungeon Game)题解动态规划复杂度分析PythonJava(待完成)题解动态规划dp[i][j]dp[i][j]dp[i][j]表示到达房间dungeon[i][j]dungeon[i][j]dungeon[i][j]所需的最小生命值。若从左上角递推到右下角(自顶向下),当前位置的最小生命值和当前位置尚存的生命值对后续结果会产生很大影响,故放弃这个思路,选...

2019-12-07 17:32:07 293

原创 152. 乘积最大子序列(Maximum Product Subarray)

152. 乘积最大子序列(Maximum Product Subarray)题解动态规划复杂度分析PythonJava(待完成)题解动态规划因为有负数的存在,我们保存当前位置的最大乘积,和最小乘积,因为负数可以将最大乘积变最小,将最小变最大。初试化结果max_res=MINmax\_res=MINmax_res=MIN,当前最大乘积max_num=1max\_num=1max_num=...

2019-12-07 15:21:14 133

原创 139. 单词拆分(Word Break)

139. 单词拆分(Word Break)题解动态规划复杂度分析PythonJava(待完成)记忆化回溯复杂度分析PythonJava(待完成)题解动态规划初始化dp=[False,⋯ ,False]dp=[False,\cdots,False]dp=[False,⋯,False],长度为n+1n+1n+1。nnn为字符串长度。dp[i]dp[i]dp[i]表示sss的前iii位是否可...

2019-12-06 14:39:42 172

原创 132. 分割回文串 II(Palindrome Partitioning II)

132. 分割回文串 II(Palindrome Partitioning II)题解动态规划复杂度分析PythonJava(待完成)记忆化回溯复杂度分析PythonJava(待完成)题解动态规划初始化最小分割次数数组min_cut={0,1,2,⋯ ,n−1}min\_cut=\{0,1,2,\cdots,n-1\}min_cut={0,1,2,⋯,n−1},长度为字符串的长度nnn。...

2019-12-03 23:05:04 211

原创 115. 不同的子序列(Distinct Subsequences)

115. 不同的子序列(Distinct Subsequences)题解动态规划复杂度分析PythonJava(待完成)题解动态规划我们使用dp[i][j]dp[i][j]dp[i][j]表示SSS的前jjj个字符有几种方式构成TTT的前iii个字符。在SSS和TTT前插入空字符,便于计算。易知,初始化dpdpdp数组第一行全为111,第一列除首位全为000。dp[0][j]dp[0][...

2019-11-29 15:04:32 156 1

原创 97. 交错字符串(Interleaving String)

97. 交错字符串(Interleaving String)题解动态规划复杂度分析PythonJava(待完成)题解动态规划我们使用dp[i][j]dp[i][j]dp[i][j]表示s1s_{1}s1​的前iii个字符和s2s_{2}s2​的前jjj个字符是否能构成s3s_{3}s3​的前i+ji+ji+j个字符。首先,dp[0][0]dp[0][0]dp[0][0]一定是TrueTr...

2019-11-28 22:22:31 207

原创 96. 不同的二叉搜索树(Unique Binary Search Trees)

96. 不同的二叉搜索树(Unique Binary Search Trees)题解动态规划复杂度分析PythonJava(待完成)题解典型的卡特兰数问题,可使用动态规划来解决。设nnn个结点的二叉搜索树的种类为G(n)G(n)G(n),f(i)f(i)f(i)表示以iii为根节点的二叉搜索树的种数。可得:G(n)=f(1)+f(2)+⋯+f(n)G(n)=f(1)+f(2)+\cdots...

2019-11-28 11:33:07 137

原创 95. 不同的二叉搜索树 II(Unique Binary Search Trees II)

95. 不同的二叉搜索树 II(Unique Binary Search Trees II)题解递归复杂度分析PythonJava(待完成)题解卡特兰数问题递归二叉排序树的重要性质是,左子树上的节点值一定小于根节点,右子树上的节点值一定大于根节点。由此,可知若根节点为iii,则左子树的节点为[1,...,i−1][1,...,i-1][1,...,i−1],右子树的节点为[i+1,...,...

2019-11-28 00:21:57 118

原创 91. 解码方法(Decode Ways)

91. 解码方法(Decode Ways)题解动态规划复杂度分析PythonJava(待完成)空间优化复杂度分析PythonJava(待完成)题解注意这几种情况,是无法解码的:以0开头,如:“0123”,“000”0前的数字大于2,如:“215021”。0前数字小于等于2时,是可以解码的,如:“20105”。动态规划所以,算法设计如下:特判,若sss为空或者s[0]=="0"...

2019-11-27 20:04:15 230

原创 机器学习算法之k近邻模型算法原理及实现

机器学习算法之k近邻模型算法原理及实现1 算法原理1.1 kkk近邻算法1.2 kkk近邻模型1.2.1 模型1.2.2 距离度量1.2.3 kkk值的选择1.2.4 分类决策规则1.2.5 kkk近邻算法的实现:kdkdkd树1.3总结2 算法实现1 算法原理1.1 kkk近邻算法算法1 kkk近邻算法**输入:**训练数据集T=[(x1,y1),⋯ ,(xN,yN)),xi∈X⊆Rn,...

2019-11-27 11:55:20 968

原创 机器学习算法之感知机模型算法原理及实现

机器学习算法之感知机模型算法原理及实现1 算法原理1.1 感知机模型1.2 感知机学习策略1.2.1 损失函数1.2.2 损失函数推导1.3 感知机学习算法1.3.1 感知机学习算法的原始形式1.3.2 感知机学习算法的对偶形式1.3.3两种形式的对比1.4 随机梯度下降1.5 算法收敛性1.5.1 Novikoff定理1.5.2 证明算法手工实现Perceptorn手工实现原始形式手工实现对偶形...

2019-11-26 13:04:02 918

原创 72. 编辑距离(Edit Distance)

72. 编辑距离(Edit Distance)题解动态规划复杂度分析PythonJava(待完成)题解动态规划初试化dpdpdp,为(n1+1)∗(n2+1)(n1+1)*(n2+1)(n1+1)∗(n2+1)的全零矩阵,n1n1n1为word1word1word1的长度,n1n1n1为word2word2word2的长度初始化第一行和第一列,如图所示:""""""表示空字符,...

2019-11-25 10:38:39 126

原创 70. 爬楼梯(Climbing Stairs)

70. 爬楼梯(Climbing Stairs)题解动态规划复杂度分析PythonJava(待完成)公式复杂度分析PythonJava(待完成)题解典型的斐波那契数列问题,可使用递归算法,复杂度太高,这里不做介绍。仅介绍动态规划和公式法动态规划初试化dp=[0,...,0]dp=[0,...,0]dp=[0,...,0],长度为n+1n+1n+1。若n<2n<2n&...

2019-11-24 22:20:22 132

原创 32. 最长有效括号(Longest Valid Parentheses)

32. 最长有效括号(Longest Valid Parentheses)题解栈+排序复杂度分析PythonJava(待完成)栈 优化(不排序)复杂度分析PythonJava(待完成)动态规划复杂度分析PythonJava(待完成)题解栈+排序括号匹配,第一时间想到用栈进行匹配,保存下可以匹配的索引下标。然后将匹配索引排序,找到最长连续子序列。初试化栈stack=[]stack=[]s...

2019-11-24 21:09:30 125

原创 10. 正则表达式匹配(Regular Expression Matching)

10. 正则表达式匹配(Regular Expression Matching)题解递归复杂度分析PythonJava(待完成)动态规划法复杂度分析PythonJava(待完成)题解递归递归函数isMatch(s,p)isMatch(s,p)isMatch(s,p),sss表示待匹配字符,ppp表示字符规律若ppp为空,此时返回sss是否为空。表示若字符规律已经为空,若sss还不为空,此...

2019-11-23 22:06:18 377

原创 5. 最长回文子串(Longest Palindromic Substring)

5. 最长回文子串(Longest Palindromic Substring)题解动态规划复杂度分析PythonJava(待完成)中心拓展法复杂度分析PythonJava(待完成)题解动态规划特判,当sss的长度为111或者000时,返回sss。初试化最长回文子串的开始索引startstartstart和最长长度max_len=1max\_len=1max_len=1初试化...

2019-11-21 20:02:04 96

原创 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)题解两次遍历复杂度分析PythonJava(待完成)排序比对复杂度分析PythonJava(待完成)题解两次遍历第一次简历:从前向后遍历,使用max_nummax\_nummax_num,保存到当前位置为止的最大值,若下个数大于等于max_nummax\_nummax_num,则更新m...

2019-11-19 15:38:43 126

原创 560. 和为K的子数组(Subarray Sum Equals K)

560. 和为K的子数组(Subarray Sum Equals K)题解哈希复杂度分析PythonJava(待完成)题解借助哈希表保存累加和sumsumsum及出现的次数。若累加和sum−ksum-ksum−k在哈希表中存在,则说明存在连续序列使得和为kkk。则之前的累加和中,sum−ksum-ksum−k出现的次数即为有多少种子序列使得累加和为sum−ksum-ksum−k。哈希初...

2019-11-19 12:25:52 116

原创 448. 找到所有数组中消失的数字(Find All Numbers Disappeared in an Array)

448. 找到所有数组中消失的数字(Find All Numbers Disappeared in an Array)题解鸽巢思想复杂度分析PythonJava(待完成)鸽巢思想的另一种方式复杂度分析PythonJava(待完成)题解第一时间想到一个萝卜一个坑,鸽巢思想。鸽巢思想对于题目中1<=nums[i]<=n1<=nums[i]<=n1<=nums[i]...

2019-11-18 17:47:29 143

原创 287. 寻找重复数(Find the Duplicate Number)

题解本题的难点在于:不能更改原数组只能使用O(1)O(1)O(1)的额外空间二分法按题目表达,设数组长度为nnn,则数组中元素∈[1,n−1]\in[1,n-1]∈[1,n−1],且只有一个重复元素。一个直观的想法,设一个数字k∈[1,n−1]k\in[1,n-1]k∈[1,n−1],统计数组中小于等于kkk的数字的个数countcountcount:若count<=kco...

2019-11-18 15:51:11 333

原创 238. 除自身以外数组的乘积(Product of Array Except Self)

238. 除自身以外数组的乘积(Product of Array Except Self)题解左积和右积复杂度分析PythonJava(待完成)题解使用左边乘积和右边乘积进行计算。左积和右积初始化数组长度nnn。初始化res=[0,0,...,0]res=[0,0,...,0]res=[0,0,...,0]为1∗n1*n1∗n的数组。初试化乘积k=1k=1k=1从左向右遍历,遍历...

2019-11-17 12:52:04 127

原创 228. 汇总区间(Summary Ranges)

228. 汇总区间(Summary Ranges)题解三指针复杂度分析PythonJava(待完成)题解三指针特判,若数组长度为1,返回str(nums[0])str(nums[0])str(nums[0])初始化左右指针l=0,r=0l=0,r=0l=0,r=0和当前访问指针cur=0cur=0cur=0。初始化结果res=[]res=[]res=[]循环条件cur<...

2019-11-17 00:25:54 156

空空如也

空空如也

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

TA关注的人

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