0 TechFlow

尚未进行身份认证

我要认证

公众号:TechFlow

等级
TA的排名 4w+

LeetCode 73,为什么第一反应想到的解法往往是个坑?

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是LeetCode第42篇文章,我们来看看LeetCode第73题矩阵置零,set matrix zeroes。这题的难度是Medium,通过率在43%左右,从通过率上可以看出这题的难度并不大。但是这题的解法不少,从易到难,有很多种方法。而且解法和它的推导过程都挺有意思,我们一起来看下。题意首先我们来看题意,这题的题意很简单,给定一个二维数组。要求我们对这个数组当中的元素做如下修改,如果数组的i行j列为0,那么将同行和同列的元素全部

2020-06-03 09:55:49

Go语言基础教程——map篇

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法。map这个数据结构我们经常使用,存储的是key-value的键值对。在C++/java当中叫做map,在Python中叫做dict。这些数据结构的名称虽然不经相同,背后的技术支撑也不一定一样,比如说C++的map是红黑树实现的,Java中的hashmap则是通过hash表。但是使用起来的方法都差不多,除了Java是通过get方法获取键值之外,C++、Python和gol

2020-06-02 10:10:37

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

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

2020-05-31 09:34:33

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

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

2020-05-29 10:48:51

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

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

2020-05-28 11:19:09

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

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

2020-05-27 08:28:10

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

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

2020-05-26 09:44:23

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

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

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

2020-05-24 09:08:49

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

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

2020-05-23 09:33:14

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

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

2020-05-22 09:10:13

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

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

2020-05-21 08:38:39

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

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

2020-05-20 09:58:50

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

本文始发于个人公众号: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

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

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

2020-05-18 08:38:43

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

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

2020-05-17 08:47:46

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

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

2020-05-16 10:09:50

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

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

2020-05-15 09:37:29

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

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

2020-05-14 11:22:16

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

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

2020-05-13 23:15:15

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 原力探索 · S
    原力探索 · S
    在《原力计划【第二季】》打卡挑战活动中,发布 12 篇原创文章参与活动的博主,即可获得此勋章。(本次活动结束后统一统计发放)