- 博客(64)
- 收藏
- 关注
原创 《剑指offer》54(Fin)、滑动窗口的最大值
《剑指offer》系列的最后一篇,我也没想到这个系列写了3个月+之久。说实话,写到最后几题,其实我已经有一些敷衍了,但确实个人认为《剑指offer》的设计和排版一个稍稍的缺陷是——最后的部分在思路上,代码上,都不如前半和中腹的题目来得精细。当然收尾的部分也是一个练习为主的用意,又或者,作者也像我一样有点小偷懒?offer54的要求是:给出一个数组,一个滑动窗口的大小,求滑动窗口的左端处于什么位置时,窗口中的数之和最大。只要知道滑动窗口是个啥玩意,既无技巧也无技术可言了。# offer54-solut
2021-01-08 10:24:43
229
原创 《剑指offer》53、字符串的翻转
offer53的要求是,给出一个类似下面的句子:student. a am I它满足的结构是:单词和符号本身的顺序是正确的,但是句子的顺序是倒序的,现在需要将其翻转,即输出 I am a student.切片组合法python中可以利用空格对整个字符串进行切片,这是个语法糖:# offer53-solution 1def ReverseSentence(self, s): #切片组合法 if len(s.split())==0: return s return
2021-01-08 09:44:24
171
原创 《剑指offer》52、两数之和/三数之和
offer52的题目要求是:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。两数之和当然,即便输入的不是一个递增排序的数组,我们也可以sort一下变成一个完成排序的数组。数组的递增性给我们带来了许多便利,比如我们可以用双指针从头和结尾开始遍历:# offer52-solutionclass Solution: def FindNumbersWithSum(self, array, tsum): i
2021-01-06 09:59:49
254
1
原创 《剑指offer》51、数组操作之两个只出现一次的数
offer51的要求是从一个数组中找出两个只出现一次的数a,b,并返回[a,b]说到去重,很容易想到带字典的一次遍历,字典可以有效地记录每一个键对应的值(出现次数),所以代码本身也不复杂:# offer51-solutiondef FindNumsAppearOnce(self, array): usedNum = {} for i in range(len(array)): if array[i] in usedNum: usedNum[arr
2021-01-05 09:36:06
137
原创 《剑指offer》50、二叉树操作之平衡二叉树
offer50的要求是:输入一棵二叉树,判断该二叉树是否是平衡二叉树。若左右子树深度差不超过1则为一颗平衡二叉树。说白了,就是求二叉树的深度问题,深度问题就是递归问题,二叉树的递归想必我们已经写烂了。# offer50-solutionclass Solution: def TreeDepth(self, pRoot): # 1、二叉树深度 if pRoot is None: return 0 return max(self.TreeD
2020-12-31 09:54:54
105
原创 《剑指offer》49、搜索二叉树的第k大节点
首先,关于二叉树的一些其它题目,可以参考:《剑指offer》28-30、二叉树四则:之字形遍历、层次遍历、搜索二叉树的后序遍历、二叉树的路径搜索二叉树的概念:左子结点值小于根节点值,根节点值小于右节点值,所以最后一个元素肯定是根节点。offer49的要求是找搜索二叉树的第k大节点,我采取的是中序遍历的方法,如果对上面链接的题目都很熟的话,这里真的没啥好讲的,代码也简单。我把inorder定义在了递归里面,这样看上去可能不太好理解,其实就是方便写递归。# offer49-solutionclass
2020-12-22 09:38:50
128
1
原创 《剑指offer》48、二分查找:排序数组中某数的出现次数
offer48提出的问题是:假设给定一个有序的整型数组arr,以及一个整数 k,问 k在数组中出现了几次?二分查找法由于暴力法过于无脑,这里代码都不给了……我想以本例为引子,简单介绍一下二分查找法。设计出KMP算法的大佬说过:Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly trickywhcih means二分查找涉及很多不明不白不清
2020-12-21 10:39:10
223
原创 《剑指offer》47、两链表的首个公共结点
offer47的要求很简单:输入两个链表,找出它们的第一个公共结点。又先搬一张图,最近画图很懒啊……二次遍历方法有很多,除了暴力方法外,我最先想到的是二次遍历:先获得两个链表的长度,然后在较长的链表上先走若干步(两链表长度之差),接着同时在两个链表上遍历,找到的第一个相同的节点就是他们的第一个公共节点。时间复杂度O(m + n)。# offer47-solution 1class Solution: def FindFirstCommonNode(self, pHead1, pHead2
2020-12-16 10:39:51
96
原创 《剑指offer》46、数组中的逆序数对
offer46的题意要求是:先定义在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。然后input一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果output, 即输出P%1000000007。暴力法对时间复杂度不作要求时,顺序扫描整个数组,每扫描到一个数字的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成一个逆序对。这样时间复杂度是O(n2)O(n^2)O(n2)# offer46-solution 1
2020-12-14 09:50:47
111
原创 《剑指offer》43&45、最长不含重复字符的字符串&第一个只出现一次的字符
最长不含重复字符的字符串offer43的给出了一个字符串,要求其中最长不含重复字符的子字符串。本例题目描述简单,但是方法多种多样,比较容易想到的是暴力方法和滑动窗口。就python而言,我们可以利用字典中不能有重复元素的特性来解决。此外,也能通过动态规划来解决。暴力遍历暴力遍历要求两次遍历,复杂度是O(n2)O(n^2)O(n2),反正我是能接受的,天河二号也是能接受的。# offer43-solution 1def lengthOfLongestSubstring(self, s: str)
2020-12-11 15:09:52
137
原创 《剑指offer》41、把数字翻译成字符串
offer41的题目是给定一个数字,然后按照如下规则把它翻译为字符串:0翻译成”a”,1翻译成”b”,……,11翻译成”l”,……,25翻译成”z”。这样一来,一个数字可能有多个翻译——例如12258有5种不同的翻译,它们分别是”bccfi”、”bwfi”、”bczi”、”mcfi”和”mzi”。现在给出一个数字,要求其总的翻译方法数。递归本来这题我是想和“最长不含重复字符的字符串”,以及“第一个只出现一次的字符”放在一起讲的,但是后来发现是完全不一样的问题。“把数字翻译成字符串”的核心在于将原问
2020-12-09 10:06:46
146
原创 《剑指offer》39&42&44、数学类三则:1-n中1出现的个数、最大的礼物、丑数
1到n中1出现的个数offer39的要求是,求1-n的整数中1出现的次数,比如input25,那么1在1,10-19,21中出现了1+1+10+1(11出现了两个1)=13次语法糖俗话说得好,有count不count猪头三。# offer39-solution 1def count_1_nums(self, n): count = 0 for i in range(1,n+1): count = count + str(i).count('1') retur
2020-12-08 14:12:22
136
1
原创 《剑指offer》35-38&40、数组类操作:出现次数过半的数、最小的k个数、数据流的中位数、连续子数列之和、把数组排成最小的数
数组既然要一次介绍那么多数组问题,就有必要老生常谈地聊聊数组:数组(Array)是有序的元素序列。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。早在本科学C++的时候,大家就已经开始接触数组,和数组一起出现的往往是时间复杂度和空间复杂度的考察,比如求两个有序数组的交集,时间复杂度O(m+n);求两个有序数组的中位数,时间复杂度log(len1+l
2020-12-04 11:01:43
113
原创 《剑指offer》34、字符串的全排列及其延伸(排列组合的递归与N皇后问题)
字符串的全排列offer34的题目要求是先输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母,然后输出它的全排列。for example:输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba做类似的排列组合问题时,我们的思路还是比较固定的:把一个字符串看成两部分组成:第一部分为第一个字符,第二部分为后面的所有字符。以此为基础来构建递归:首先求所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符交换;然后固定第一个
2020-12-03 15:22:15
211
原创 《剑指offer》33、前序遍历与反构筑二叉树
题目要求是对二叉树进行前序遍历与反构筑二叉树;我觉得到了这里的题目,很多知识点都已经讲过了,关于二叉树的问题,请参考二叉树的预备知识,以及剑指offer之前的四道二叉树的题目。《剑指offer》预备知识-链表与二叉树《剑指offer》06&07、二叉树的重构与下一个结点《剑指offer》23&24、树的子结构与镜像二叉树这次直接上代码,没啥好说的。尤其是前序遍历,老朋友了# offer33-solutionclass Solution: flag = -1 de
2020-11-12 10:04:13
172
1
原创 《剑指offer》32、二叉排序树转双向链表
题目描述:输入一颗二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能有新的结点,只能调整结点的指向。思路:转换后的双向链表中结点的顺序与二叉树的中序遍历相同,因此本质就是写一个二叉树的中序遍历,再写一个双向链表的插入。写成递归会方便一些,非递归的形式也有,不过我没写出来。代码:# offer32-solutionclass Solution: def Convert(self, pRootOfTree): if not pRootOfTree:
2020-11-11 14:17:18
148
1
原创 《剑指offer》31、带random指针的复杂链表复制
复杂链表定义本来想将这个问题和32“二叉排序树转链表”一起写的,但是这里要展开的部分太多,而且这个问题本身也是相对困难的,所以还是分开写吧。首先是复杂链表的定义,我找了一段java的public class RandomListNode {int val;RandomListNode next;RandomListNode random;public RandomListNode(int val){this.val=val;}}或者是:class RandomListNode:
2020-11-09 10:41:25
218
原创 《剑指offer》28-30、二叉树四则:之字形遍历、层次遍历、搜索二叉树的后序遍历、二叉树的路径
二叉树基础关于二叉树的问题,请参考二叉树的预备知识,以及剑指offer之前的四道二叉树的题目。《剑指offer》预备知识-链表与二叉树《剑指offer》06&07、二叉树的重构与下一个结点《剑指offer》23&24、树的子结构与镜像二叉树层次遍历与之字形遍历层次遍历offer28其实提了两个要求,第一个是单纯的层次遍历,第二个则是之字形,即从左到右到左到右的层次遍历。先从简单的开始:关于层次遍历是什么就不展开了……都到这份上了。以人的思维来看层次遍历貌似比前、中、后序遍历更
2020-11-05 10:52:35
229
原创 《剑指offer》27、合法的pop序列
前言本来这个应该和之前的26、包含min功能的栈写在一起的,都是辅助栈的应用。不过26的代码比较长,所以还是分开了。本次题目的要求是:给出入栈序列push和一个出栈序列pop,判断pop序列是否合法。分析我们先上图说话通过图左的合法序列和图右的不合法序列,我们可以得出一个判断依据:1、如果下一个弹出的数字刚好是栈顶数字,那么直接弹出2、如果下一个弹出的数字不在栈顶,我们就要把压栈序列中还没有入栈的数字继续压栈,直到下一个弹出的数字刚好是栈顶数字,即回到13、如果压栈到穿序列仍然没有回到1,
2020-10-26 10:51:31
270
原创 R的绘图(二)——基本图形
图先欠着除了点线图以外,在实际的运用中还有许多其它基本图形,本篇笔记将简单介绍这些图形。就像本科毕业设计一样,虽然搞出了很高大上的设计,然而还是不得不把最基本的东西说道说道。条形图条形图可以说是基础图形里比较复杂的,变化最多的一种。为了阐述它的制作,我们还要载入vcd包,载入这个包的原因是1、我们可以使用里面的Arthritis数据集,这个数据集是很好的绘图材料;2、我们需要用它来绘制条形图的变形——荆棘图。条形图的核心函数是barplot(height)最简单的条形图我们先用table提取Ar
2020-10-24 19:47:45
789
原创 《剑指offer》26、包含min功能的栈
包含min功能的栈:要求设计一个栈,除了正常进出栈以外,还有一个输出最小值的功能。首先自然而然可以想到python自带的min函数……其实沿着min函数的思路走,如果我们想要搜索一个list的最小值,我们可以从左往右遍历,然后先找到前两个元素的较小者,再将其与第三个元素比较,得出更小者,再向后比较,以此类推。那么对本题也是类似,我们可以使用上述的判断方法,同时设置一个辅助栈,用于存放当前栈的最小值。设置辅助栈是因为,若最小值出栈了,最小值需要进行更新,因此需要辅助栈来保存次小值。基于这个思路,我们可以很
2020-10-22 10:39:35
97
原创 《剑指offer》25、矩阵的螺旋打印
题目要求是,给出一个N,要求螺旋输出N*N的矩阵:比如 N = 3,打印:1 2 38 9 47 6 5虽然很多说法都说不断判断边界条件的转换会使代码写得十分繁复。但其实这里有个trick,打印的方向始终是从左往右→从上往下→从右往左→从下往上的。那么我们只要先用一个list装填所有的数,用是否为0判断边界即可,这样用两层的while判断就能写出来。但写了一次,还是会很复杂……刚才其实说到:打印的方向始终是从左往右→从上往下→从右往左→从下往上的。所以可以想到递归,实际上这个递归相当好写。#
2020-10-21 10:11:11
127
1
原创 《剑指offer》23&24、树的子结构与镜像二叉树
二叉树基础关于二叉树的问题,请参考二叉树的预备知识,以及剑指offer之前的两道二叉树的题目。《剑指offer》预备知识-链表与二叉树《剑指offer》06&07、二叉树的重构与下一个结点树的子结构offer23的问题是给出两棵树A和B,判断B是否A的子结构(我们约定空树不是任何一棵树的子结构)涉及到树的结构问题,80%以上是递归。我们需要先把找子结构的思路写出来,然后再顺势写出递归。1、首先要判断AB是否空树2、然后要找到A的一个节点,使得它恰为B的根节点;这个节点就是递归的起点,
2020-10-20 10:53:01
164
1
原创 《剑指offer》17、判断正则式是否匹配
正则式匹配题目应该说,在《剑指offer》前半的题目中,正则式匹配无论是新颖程度还是难度都是比较高的一题。题目给出一个字符串和一个带有“.”与“ * ”的正则表达式,求问这个表达式和原字符串是否匹配。其中的匹配规则是:字符 . 表示任意一个字符,而“” * “”表示它前面的字符可以出现任意次(包含0次)举个例子:字符串"aaa"与模式"a.a"和"ab*ac*a"均匹配字符串"aaa"与"aa.a"和"ab*a"均不匹配分析题目有点绕,但是即便没接触过SQL的朋友应该也是接触过正则表达式的
2020-10-16 10:57:38
241
原创 《剑指offer》16&19&20&22、链表四则:删除节点、倒数第k个节点、环的入口、有序链表合并
前言《剑指offer》的16&19-22连续出现了多个链表类的题目,比之前的难度要稍微高一些。这时候一定要画图做分析,达到事半功倍的效果。关于链表的结构请参考:《剑指offer》预备知识-链表与二叉树我会直接调用里面定义的这个链表的类之前还出现了两道典型题目:05的链表反向输出和21的链表反转,可以参考这个笔记:《剑指offer》05&21、链表反向输出与反转关于链表其实网上有海量的文章,但是到了这份上相信对链表本身大家已经相当熟悉,只是一些思路不能很快的理清,也没有很clea
2020-10-15 14:03:50
157
原创 《剑指offer》15、打印1到最大的n位数
打印1到最大的n位数题目的意思是,输入一个n,然后从1开始输出,2,3……直到10^n-1。当n<10的时候自然能一次循环遍历。当n更大的时候,就要考虑字符串的组合了。这题考察细节和字符的处理,如果做过高精度加法的话,实在没什么难度……直接给代码了。# offer15-solutionclass Solution: def Print1ToMaxOfNDigits(self, n): if n <= 0: return n
2020-10-14 09:47:20
99
原创 《剑指offer》12、剪绳子(动态规划与贪心)
剪绳子offer12给出的是一个数学类的问题,现有一段长度为n>1的绳子,要将其剪成m>1段,m,n均为整数,问如何剪才能使得剪断的每一段绳子的长度乘积最大。比方说,有一段长度为5的绳子,那么有如下的剪法:[4,1],[3,1,1],[3,2],[2,2,1],[2,1,1,1],[1,1,1,1,1]其中[3,2]有最大的乘积6.动态规划关于动态规划,展开讲的话就没完没了了。我给出了两个知乎上的链接和一个cnblog上的介绍,我觉得这三个地儿讲得足够齐全了。当然,我们举一个非常简
2020-10-13 10:46:53
275
原创 《剑指offer》11、矩阵路径(回溯法)
矩阵路径offer11将给出一个字符矩阵以及一个“路径”,试问矩阵中是否存在这样的一个路径。以下面的一个矩阵为例,它存在路径REALITY,但不存在路径FAKE:回溯法这里必然涉及简单的回溯法解题了。回溯法是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。它是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的
2020-10-10 10:19:17
114
原创 《剑指offer》10&18、旋转数组的最小值&重排数组
数组数组(Array)是有序的元素序列,组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。可以说,数组是最常见的数据结构了,也是出题时能玩出花来的一种类型。它和数学,排序息息相关,实际上我们在offer01-03中已经数次见到它们了。《剑指offer》01&02、数组中的重复数《剑指offer》03、二维数组的检索而offer10和18也
2020-09-30 14:32:00
127
原创 《剑指offer》09&13&14、数学类问题:斐波那契数列、二进制数中1的个数、数值的整数次方
数学类问题偶尔闲谈几句,数学类问题在各种面试中都会出现,不过一般出现形式都不会让你写代码。笔者某次面试银行的时候,就被问到一个数学问题,说有一个四位数的完全平方数aabb,问它是谁的平方。2分钟,无纸笔。笔者当场虽然发现了这个aabb的一些特征,但关键的步骤上,还是通过心算强行搞出来的。大家如果有兴致,可以想一想,这道题其实只需要小学生的计算能力就可以了。在《剑指offer》中,也有一些数学类问题。这次就把三个问题放在一起,它们披着数学的背景,本质上还是考察一定的计算机知识。斐波那契数列的第n项of
2020-09-29 11:00:12
251
原创 《剑指offer》08、用两个栈实现队列的push和pop
栈与队列offer08要求用两个栈实现队列的进与出的功能。这里涉及到两个概念:栈与队列。尽管栈还要分为堆栈链栈之类的结构,但是往简单里说,这两者的区别在于:栈是先进后出,队列是先进先出,栈相当于有一个封底。两个栈实现队列对于进队列功能,我们直接用进A栈来解决。对于出队列功能,我们可以将A栈的元素全部压进到B栈,然后再从B栈弹出元素即可。细节方面,如果B栈之前还有元素,要先全部弹出。class Solution: def __init__(self): self.stack
2020-09-28 10:24:55
166
原创 《剑指offer》06&07、二叉树的重构与下一个结点
二叉树基础关于二叉树的基础结构,请参考《剑指offer》预备知识-链表与二叉树今天我们以如下这棵二叉树作为例子。重构二叉树offer06的要求是,给出一棵二叉树的前序遍历和中序遍历,要求重构这棵二叉树,那我们就需要知道什么叫前序遍历和中序遍历(顺便说说后续遍历)。前序遍历对于每一个节点,按照根节点→左子节点→右子节点的方式遍历。在本树中,先考察根节点6,它有左节点3和右节点7对于左节点3,它作为根节点的话,有左节点1和右节点5对于左节点1,它作为根节点的话,有右节点2作为叶结点。所以有
2020-09-27 14:40:52
149
原创 《剑指offer》05&21、链表反向输出与反转
链表结构关于链表的结构请参考:《剑指offer》预备知识-链表与二叉树我会直接调用里面定义的这个链表的类(但不调用大部分的类方法,不然就是出猫了→_→)。链表反向输出offer05的要求是,给出和一个链表,要求反向输出。这里先给出一个[1,2,3,4,5]的链表from linklist import ListNode, LinkListl = LinkList()for i in range(1,6,1): l.append(i)node = l.head如果对数据结构有了
2020-09-25 14:01:34
124
原创 《剑指offer》04、用“%20“替换空格
替换空格题目要求输入一个字符串,然后用字符串"%20"替换原字符串中的空格,实际上就是用一个新的字符串new_string去替换原字符串中的某子字符串old_substring。之前写的时候用了个变量char来装字符串,容易引起歧义但是也不想改了→_→# Input a string name char...import syschar = input()if char == '': print("空字符串 or Null指针") sys.exit()replace魔法直接
2020-09-24 14:17:05
209
原创 《剑指offer》03、二维数组的检索
二维数组的检索题目要求是给出一个m*m的矩阵,里面的数满足从左往右,从上往下递增。要求检索目标是否在矩阵里。以下是我随便画的一个矩阵。# 输入一个行列都递增的二维数组,判断某个元素是否在内m = int(input())grid = [[] for i in range(m)]for i in range(m): line = input().split(' ') for j in range(len(line)): grid[i].append(int(line
2020-09-23 15:40:38
137
原创 《剑指offer》01&02、数组中的重复数
数组中的重复数题目要求是输入一个长度为n的数组,含有1至n-1的整数,找出其中的重复数,如果对python熟悉的话,首先就会想到一个重要的函数sorted:sorted(data, cmp=None, key=None, reverse=False) 其中,data是待排序数据,可以使List或者iterator, cmp和key都是函数,这两个函数作用与data的元素上产生一个结果,sorted方法根据这个结果来排序。cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 &l
2020-09-22 10:44:20
99
原创 《剑指offer》预备知识-链表与二叉树
前言最近在重温之前写过的剑指offer的代码,不得不说现在无论是社招还是校招,从搞java的到搞python的,都会被问点数据结构和算法类的题目。个人认为《剑指offer》编得相当不错,如果真的能扎扎实实搞懂里面的题目的话,应付中小厂的面试基本不会有什么问题。不过落落本身是搞数据和模型的,对数据结构和计算机类知识底子较薄,所以写出来的玩意只能拿来讨论参考。在这一系列的笔记正式开始之前,先写一篇预备的知识。《剑指offer》涉及若干和链表与二叉树相关的题目,在这里我们先给出链表与树的定义,方便以后的解题。
2020-09-21 15:28:29
197
原创 GEM(Generalized Expectation Maximizatio)算法简介
前言之前我写过一篇EM算法的笔记:EM算法(Expectation-maximization algorithm)小结从中我们可以看到,EM算法的本质就是E-step和M-step的重复迭代:E-step:Q(ϕ∣ϕi)=E(log(f(x∣ϕ))∣y,ϕi)Q\left(\phi \mid \phi^{i}\right)=E\left(\log (f(x \mid \phi)) \mid y, \phi^{i}\right)Q(ϕ∣ϕi)=E(log(f(x∣ϕ))∣y,ϕi)M-step:
2020-09-20 08:42:16
3100
原创 天作之合:水果与朗姆酒
曾登上至高之天,也曾踏破至深之渊,苍穹为被,大地为家,左手鲁特琴,右手金凤花,大家好,我是好酒的吟游诗人落落。上次给大家好好地介绍了一下Zombie鸡尾酒。实际上,水果和朗姆可以玩很多花样出来,不仅限于Zombie这种烈酒,还有很多简单的特饮。没看到我对Zombie鸡尾酒的介绍的话,可以看下面的链接。感受夏威夷风的威力吧——Zombie鸡尾酒说到水果风朗姆,落落想大家应该都有一个简单的疑惑:为什么只有水果风朗姆,没有水果风龙舌兰,水果风伏特加,水果风金酒呢……其实都有,比如龙舌兰日出就是水果风的龙舌兰。
2020-09-19 16:55:30
1796
原创 EM算法(Expectation-maximization algorithm)小结
EM算法(Expectation-Maximization algorithm)是一类通过迭代进行极大似然估计的优化算法,今天翻出了之前的笔记,在这里也放一下吧。EM算法背景EM(expectation-maximization)算法是Dempster,Laird和Rubin(DLR)三个人在1977年正式提出的.主要是用于在不完全数据的情况下计算最大似然估计.在EM算法正式提出以来,人们对EM算法的性质有更加深入的研究.并且在此基础上,提出了很多改进的算法.在数理统计,数据挖掘,机器学习以及模式识别等
2020-09-13 10:55:39
785
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人