自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从辗转相除法到求逆元,数论算法初体验

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是算法和数据结构专题的第22篇文章,我们一起来聊聊辗转相除法。辗转相除法又名欧几里得算法,是求最大公约数的一种算法,英文缩写是gcd。所以如果你在大牛的代码或者是书上看到gcd,要注意,这不是某某党,而是指的辗转相除法。在介绍这个算法之前,我们先来看下最大公约数问题。暴力解法这个问题应该很明确了,我们之前数学课上都有讲过。给我们纸笔让我们求都没有问题,分解因数找下共同的部分,很快就算出来了。但是用代码实现怎么做呢?用代码实现的话

2020-05-31 09:34:33 777

原创 深入了解机器学习决策树模型——C4.5算法

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是机器学习专题的第22篇文章,我们继续决策树的话题。上一篇文章当中介绍了一种最简单构造决策树的方法——ID3算法,也就是每次选择一个特征进行拆分数据。这个特征有多少个取值那么就划分出多少个分叉,整个建树的过程非常简单。如果错过了上篇文章的同学可以从下方传送门去回顾一下:如果你还不会决策树,那你一定要进来看看既然我们已经有了ID3算法可以实现决策树,那么为什么还需要新的算法?显然一定是做出了一些优化或者是进行了一些改进,不然新算法显然是没

2020-05-29 10:48:51 570

原创 动态规划经典教学题,上过《算导》的应该都会

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode专题第41篇文章,我们一起来看一道经典的动态规划问题Edit Distance,编辑距离。今天这道题我本来是想跳过的,因为它实在是太经典了,属于典型的老掉牙问题了。但是想了想,一方面因为之前立了flag要把所有Medium和Hard写一遍,另一方面也是为了照顾萌新,所以还是把这题放上来了。相信上过算法导论这门课的同学一定都见过它,如果你没有上过属于萌新,那也没有关系,学习起来也不会很费劲的。编辑距离编辑距离非常经典

2020-05-28 11:19:09 393

原创 1700人点反对的LeetCode问题,是因为太难了吗?

今天是LeetCode专题的第40篇文章,我们一起来看的是LeetCode中的71题Simplify Path,中文名是简化路径。这题的难度是Medium,通过率是1/3左右,也是一道踩多捧少的题,一共有737个点赞,1703个反对。老实讲我觉得反对得不冤,我先卖个关子,等会来详细聊聊它为什么会被踩。题意题目会给定一个字符串,表示一个Unix系统下的文件路径,这个路径当中会包含一些路径的计算, 要求我们返回简化之后的结果。在Unix系统下用/来分隔文件夹,比如/home/download/fi.

2020-05-27 08:28:10 193

原创 从这道字符串处理的难题,寻找解决复杂问题的套路

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode专题的第39篇文章,我们一起来看下LeetCode第68题 Text Justification。这题官方给的难度是Hard,通过率不到1/3。并且624赞同,1505反对。光看这个数据,可能会觉得这题很难,或者是藏着什么坑点,但其实做下来之后发现并不是这样的。题目只能算是稍稍复杂,并不算棘手,唯一的可能大概是大家比较畏惧字符串处理的问题吧。题意题目会给定一系列单词和一个每行的最长长度maxWidth,要求我们根据

2020-05-26 09:44:23 358

原创 golang基础教程——字符串篇

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第6篇文章,这篇主要和大家聊聊golang当中的字符串的使用。字符串定义golang当中的字符串本质是只读的字符型数组,和C语言当中的char[]类似,但是golang为它封装了一个变量类型,叫做string。知道了string这个类型之后,我们就可以很方便地来初始化:var str stringstr1 := "hello world"var str2 = "hello world too"这里应该没什

2020-05-25 10:56:29 616

原创 想学spark但是没有集群也没有数据?没关系,我来教你白嫖一个!

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是spark专题的第六篇文章,这篇文章会介绍一个免费的spark平台,我们可以基于这个平台做一些学习实验。databricks今天要介绍的平台叫做databricks,它是spark的创建者开发的统一分析平台。单凭spark创建者这几个字大家应该就能体会到其中的分量,其中集成了Scala、Python和R语言的环境,可以让我们在线开发调用云端的spark集群进行计算。最最关键的是,它提供免费的社区版本,每个开发者都可以获得15GB内

2020-05-24 09:08:49 478

原创 优先队列的核心,面试的常客,带你深入了解堆

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是算法和数据结构的第21篇,我们来聊一个新的数据结构——堆(heap)。和链表、二叉树以及数组这些热门的数据结构相比,堆相对比较冷门。如果你对数据结构了解不深的话,可能很少听说。但是我们经常用到它,虽然可能你并不一定能感知到。比如说优先队列,我们就经常使用。我们需要用到这样一个数据结构,能够根据我们存入数据的优先级进行排序,将优先级高的排在前面。在和调度相关的一些系统和算法当中,优先队列是必然会用到的。但是很少有人知道,优先队列说是一个队列

2020-05-23 09:33:14 204

原创 手把手教你用Python实现决策树模型

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是机器学习专题的第21篇文章,我们一起来看一个新的模型——决策树。决策树的定义决策树是我本人非常喜欢的机器学习模型,非常直观容易理解,并且和数据结构的结合很紧密。我们学习的门槛也很低,相比于那些动辄一堆公式的模型来说,实在是简单得多。其实我们生活当中经常在用决策树,只是我们自己没有发现。决策树的本质就是一堆if-else的组合,举个经典的例子,比如我们去小摊子上买西瓜。水果摊的小贩都是怎么做的?拿起西瓜翻滚一圈,看一眼,然后伸手一拍

2020-05-22 09:10:13 4654 8

原创 Python一切皆是对象,但这和内存管理有什么关系?

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Python的第15篇文章,我们来聊聊Python中内存管理机制,以及循环引用的问题。Python的内存管理机制对于工程师而言,内存管理机制非常重要,是绕不过去的一环。如果你是Java工程师,面试的时候一定会问JVM。C++工程师也一定会问内存泄漏,同样我们想要深入学习Python,内存管理机制也是绕不过去的一环。不过好在Python的内存管理机制相对来说比较简单,我们也不用特别深入其中的细节,简单做个了解即可。Python内存

2020-05-21 08:38:39 277

原创 这道LeetCode题究竟有什么坑点,让它的反对是点赞的9倍?

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode专题的第38篇文章,我们一起来看看第65题,Valid Number。曾经我们聊到过算法当中的一个类别——模拟题。所谓的模拟题就是题面非常简单,也不涉及任何复杂的算法,但是要实现的功能比较麻烦,非常考验人思维的缜密程度,很难写出bug-free的代码来。今天要说的65题可以说是其中的典范,它的题面非常简单,简单到只有一句话,但是要实现非常麻烦,比较锻炼人的耐心,我们一起来看看。题面给定一个字符串,判断它是否是一个合

2020-05-20 09:58:50 205

原创 动态规划两题连刷,移动下标的小技巧

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode的37篇,我们继续愉快的刷题。今天要刷的题目输出LeetCode 63和64两题,分别是Unique Paths II和Minimum Path Sum。从题目的名称我们就可以看出来,今天的题目都和path有关,其实不止如此,这两题的题意也几乎一样,本质上都是上一篇文章所讲的LeetCode 62题的延伸和拓展。这也是我们把这两题放在一起解决的原因。Unique Paths II我们先来看第一题,Unique Pa

2020-05-19 08:12:34 219

原创 手把手Numpy入门教程【二】——数组与切片

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算。上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会是我们自己写循环来计算的上百倍甚至更多。并且Numpy的API非常简单,通常只要简单几行代码就可以完成非常复杂的操作。计算与广播在Python中的数组无论是什么类型,我们是无法直接对其中所有的元素进行计算的。想要做到这一点,必须要通过map这样的方式操作。而Numpy当中,我们可以很方便地对一整个数组

2020-05-18 08:38:43 253

原创 手把手golang教程——数组与切片

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用。数组与切片golang当中数组和C++中的定义类似,除了变量类型写在后面。比如我们要声明一个长度为10的int型的数组,会写成这样:var a [10]int数组的长度定义了之后不能改变,这点和C++以及Java是一样的。但是在我们日常使用的过程当中,除非我们非常确定数组长度不会发生变化,否则我们一般不会使用数组,而是使用切片(slice)。切片

2020-05-17 08:47:46 415

原创 机器学习——方差、协方差与皮尔逊值

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是概率统计专题的第六篇,我们来看看方差相关的概念。方差的定义方差在我们的日常生活当中非常常见,它主要是为了提供样本离群程度的描述。举个简单的例子,我们去买一包薯片,一般来说一袋薯片当中的数量是固定的。我们假设平均每袋当中都有50片薯片好了,即使是机器灌装,也不可能做到每一袋都刚好是50片,或多或少都会有些误差。而均值则无法衡量这种误差。如果现在有两个薯片品牌,它们的口味都差不多,平均每袋也都是50片。但是其中A品牌的薯片有一半是80

2020-05-16 10:09:50 423

原创 最小生成树的本质是什么?Prim算法道破天机

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是算法和数据结构专题20篇文章,我们继续最小生成树算法,来把它说完。在上一篇文章当中,我们主要学习了最小生成树的Kruskal算法。今天我们来学习一下Prim算法,来从另一个角度来理解一下这个问题。从边到点我们简单回顾一下Kruskal算法的原理,虽然上篇文章当中用了很多篇幅,但是原理非常简单。本质上就是我们对图中所有的边按照长度进行排序,之后我们按照顺序依次把它作为树的骨干,加入到树上来。在此过程当中,我们为了避免导致产生环,而

2020-05-15 09:37:29 380

原创 嫌弃Apriori算法太慢?使用FP-growth算法让你的数据挖掘快到飞起

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是机器学习专题的第20篇文章,我们来看看FP-growth算法。这个算法挺冷门的,至少比Apriori算法冷门。很多数据挖掘的教材还会提一提Apriori,但是提到FP-growth的相对要少很多。原因也简单,因为从功能的角度上来说,FP-growth和Apriori基本一样,相当于Apriori的性能优化版本。但不得不说有时候优化是一件很尴尬的事,因为优化意味着性能要求很高。但是反过来说,对于性能有着更高要求的应用场景,无论是企业也好,

2020-05-14 11:22:16 932

原创 怎么在Python装饰器中自定义功能呢?用这种方法让你“为所欲为”

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Python专题的第14篇文章,我们继续装饰器的话题,来看看怎么给装饰器包装方法,实现更多灵活的操作。在之前的文章当中,我们实现了对装饰器赋予参数,从而可以通过传入不同的参数来控制装饰器中的逻辑。这样做可以大大地增加装饰器的灵活性,但是仍然不足以解决所有的问题。如果我们面临一个变动很频繁的业务,以后也许需要加上一些当前想不到的逻辑,这个时候就没有办法仅仅通过参数来控制了。那么有没有办法不仅仅是传入参数,而是可以给装饰器添加不同的逻辑呢?

2020-05-13 23:15:15 182

原创 手把手教你学Numpy,从此处理数据不再慌「一」

本文始发于个人公众号:TechFlow,原创不易,求个关注当当当,我又开新坑了,这次的专题是Python机器学习中一个非常重要的工具包,也就是大名鼎鼎的numpy。所以今天的文章是Numpy专题的第一篇。俗话说得好,机器学习要想玩的溜,你可以不会写Python,但一定不能不会调库(大雾)。Numpy可以说是Python中最基础也是最重要的工具库了,要用Python做机器学习,玩转各种框架,Numpy是必须要会的。像是TensorFlow、pytorch这些知名框架都是基于Numpy进行计算的,可想而

2020-05-13 08:34:53 205

原创 LeetCode 62 比动态规划更好的做法

今天是LeetCode专题第36篇文章,我们一起来看下LeetCode的62题,Unique Paths。题意其实这是一道老掉牙的题目了,我在高中信息竞赛的选拔考试上就见过这题。可想而知它有多古老,或者说多经典吧。一般来说能够流传几十年的算法题,一定是经典中的经典。下面我们就来看下它的题意。这题的题意很简单,给定一个矩形的迷宫,左上角有一个机器人,右下角是目的地。这个机器人只能向下走或者是向右走,请问这个机器人走到目的地的路径一共有多少种?这题很良心地给定了条件,矩形的长和宽都不超过100.样例

2020-05-12 09:29:19 232

原创 不仅硬核游戏会坑人,来看看LeetCode出题人是怎么埋坑的

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode专题的第35篇文章,上一篇文章当中我们一口气肝了三题,不知道大家感觉怎么样?我们来放松一下,看一道相对比较简单也比较有趣的问题。题意这题的题意也只有一句话,秉承了LeetCode一贯题狠话不多的风格。题意是给定一个链表和一个整数K,要求将链表当中的所有元素向右移动K位。注意这里,元素往右边移动的意思并不是删除了,移动出边界的元素会放置到最左边。样例Input: 1->2->3->4-&g

2020-05-11 08:52:26 215

原创 spark是怎么从RDD升级到DataFrame的?

今天是spark专题的第五篇,我们来看看DataFrame。用过Python做过机器学习的同学对Python当中pandas当中的DataFrame应该不陌生,如果没做过也没有关系,我们简单来介绍一下。DataFrame翻译过来的意思是数据帧,但其实它指的是一种特殊的数据结构,使得数据以类似关系型数据库当中的表一样存储。使用DataFrame我们可以非常方便地对整张表进行一些类似SQL的一些复杂的处理。Apache Spark在升级到了1.3版本之后,也提供了类似功能的DataFrame,也就是大名鼎鼎的

2020-05-11 07:46:28 275

原创 Golang入门教程——函数、循环与分支

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Golang专题的第四篇,这一篇文章将会介绍golang当中的函数、循环以及选择判断的具体用法。函数在之前的文章当中其实我们已经接触过函数了,因为我们写的main函数本质上也是一个函数。只不过由于main函数没有返回值,也没有传参,所以省略了很多信息。func main() { fmt.Println("Hello World")}下面,我们来看看一个完整的函数是怎样的,这是golang官网上的例子。func add(x i

2020-05-09 22:18:06 352

原创 用一个“栗子”讲透让人迷惑的泊松分布

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是概率统计专题的第5篇文章,这篇文章的出现意味着高等数学专题我们已经告一段落了。高数当中剩下的内容还有很多,比如多重积分、微分方程求解等等内容。但对于算法领域来说,基本的微积分已经基本足够了,所以我们就不再继续往下延伸,如果以后有相关的内容涉及,我们再来开文章单讲。我们这篇文章的内容关于统计学中的泊松分布。举个栗子泊松分布在概率统计当中非常重要,可以很方便地用来计算一些比较难以计算的概率。很多书上会说,泊松分布的本质还是二项分布,泊

2020-05-09 08:17:28 277

原创 这是每个人都能看懂的最小生成树文章(Kruskal)

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是算法和数据结构专题的第19篇文章,我们一起来看看最小生成树。我们先不讲算法的原理,也不讲一些七七八八的概念,因为对于初学者来说,看到这些术语和概念往往会很头疼。头疼也是正常的,因为无端突然出现这么多信息,都不知道它们是怎么来的,也不知道这些信息有什么用,自然就会觉得头疼。这也是很多人学习算法热情很高,但是最后又被劝退的原因。我...

2020-05-07 20:30:15 308

原创 详解十大数据挖掘算法之一的Apriori算法

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是机器学习专题的第19篇文章,我们来看经典的Apriori算法。Apriori算法号称是十大数据挖掘算法之一,在大数据时代威风无两,哪怕是没有听说过这个算法的人,对于那个著名的啤酒与尿布的故事也耳熟能详。但遗憾的是,随着时代的演进,大数据这个概念很快被机器学习、深度学习以及人工智能取代。即使是拉拢投资人的创业者也很少会讲到这个故事...

2020-05-06 19:19:01 1281

原创 Python装饰器不会传参?别着急,这篇文章为你解惑

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Python专题的第13篇文章,上一篇文章当中我们介绍了Python装饰器的定义和基本的用法,这篇文章我们一起来学习一下Python装饰器的一些进阶使用方法。对装饰器不太熟悉,或者错过了上篇内容的小伙伴可以点击下方传送门。一文搞定Python装饰器,看完面试不再慌之前的文章当中我们从前到后仔细推到了一下装饰器的本质和用途,也学...

2020-05-05 22:57:03 597

原创 别再报培训班了,一篇文章帮你30分钟入门Python

最近有许多小伙伴后台联系我,说目前想要学习Python,但是没有一份很好的资料入门。一方面的确现在市面上Python的资料过多,导致新手会不知如何选择,另一个问题很多资料内容也很杂,从1+1到深度学习都包括,纯粹关注Python本身语法的优质教材并不太多。刚好我最近看到一份不错的英文Python入门资料,我将它做了一些整理和翻译写下了本文。这份资料非常纯粹,只有Python的基础语法,专门针对想...

2020-05-05 07:44:09 613

原创 LeetCode 57.59.60,带你一起砍瓜切菜刷三题

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode专题的第34篇文章,刚好接下来的题目比较简单,很多和之前的做法类似。所以我们今天出一个合集,一口气做完接下来的57、59和60这三题。再次申明一下,为了节约篇幅,保证文章的质量,我跳过了LeetCode当中所有的Easy以及少量没什么营养的Medium和Hard的问题。Easy的问题都不是很难,即使是新手一般来说...

2020-05-04 21:41:46 177

原创 LeetCode 56,区间合并问题

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode专题的第33篇文章,我们一起来看LeetCode的第56题,它的难度是Medium。题意这道题的题意也很简单,只有一句话:“Given a collection of intervals, merge all overlapping intervals.”interval是间隔、区间的意思,也就是说题目会给我...

2020-05-03 19:57:01 528

原创 敲黑板,定积分也有换元和分部积分法!

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是高等数学的第14篇文章,我们一起来看看定积分的换元法和分部积分法。我们之前在不定积分的内容当中曾经介绍过换元法和分部积分法这两种求解不定积分的方法,今天我们来探索将这两种方法应用在定积分上。有一点需要注意,虽然不定积分和定积分只有一字之差,但是在数学上其实它们是两个完全不同的概念。不定积分求解的是函数的原函数,而定积分则是求解的...

2020-05-02 08:38:04 892

空空如也

空空如也

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

TA关注的人

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