自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

飞奔的WSL-WLL

奔跑吧

  • 博客(39)
  • 收藏
  • 关注

原创 力扣算法----------字符串一

1无重复字符的最长子串> 最常见的就是本办法不断的循环获取各个区间,在不同的区间进行判断> 采用双指针+字典的方式进行位置保存,跳过无效位置的无效判断,本质上双指针就是确定有效区间的起点和终点。第一种方法:class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s: return 0 def getqu(i, ...

2021-05-15 01:46:26 161

原创 word2vec源码讲解,理论补充,公式解读,论文

对于word2vec的softmax就不说了,重点是要弄明白cbow、skip-gram的两种优化方式,一种是层次softmax,另外一种是负采样。二者都是优化方式,那么首先明白为什么要优化?同时这两种方式为什么可以优化。首先回答第一个问题,优化的主要原因就是原始的softmax是在全词表上进行,结果就是全词都要进行梯度更新,计算慢,同时softmax在每个词上的概率值较小,这样就使得非主要词的归一化作用不大了,因此要优化。那么层次softmax是采用哈夫曼树进行对词进行重新构造,使得每一个词的表示相比较于

2021-04-27 12:39:15 180 2

原创 广度遍历相关题目以及解法

1:再深入理解BFS之前还是首先先理解BFS到底描述的是什么。BFS是一种搜索算法,主要的就是按照广度范围进行横向搜索,所以我们必须能精确的识别出来合适可以使用BFS。一定要记住它是一种搜索算法,凡是涉及到搜索都可以使用BFS,我们知道BFS的一般模板就是queue,核心的就是里面的规则,即不断扩充queue的那条规则,换句话说就是从一个节点纵深扩展新节点的规则,这一点一定要发现且是非常重要的。同时为了防止进入死循环,有环的"图"一定要设定visited的set,记录每次访问过的节点,防止进入死循环。所以.

2020-07-04 15:58:39 286

原创 二分查找常见题目

二分查找一般的常见题目大概我目前遇到的是4类:1:数组:数组有序、有序数组旋转;三类题目:一类是查询target目标值;另一类是查询最小值;最后一类是查询最小的缺失值;、数组内有无重复元素:数组内有或者没有。以上三类两两组合2*3*2共计12种组合,所以共有21种题目。2:就是二维数组的查询目标值。具体二维数组的排序方式有2种。3:利用二分查找进行一些特定题目的优化。4:将二分查找当作一种经典的方法进行推广以及后面应用。其实这一点才是比较关键的。1:首先针对第一类问题就是一维数组的.

2020-06-25 20:59:30 718

原创 pyspark里面的SparkContext大数据平台包的使用

RDD类型:1. 并行集合(Parallelized Collections): 来自于分布式化的数据对象,比如用户自己键入的数据2. 文件系统数据集: Hadoop Datasets 或文本文件,比如通过SparkContext.textFile()读取的数据,括号里面的参数是大数据文件读取的路径。这个路劲可以使用某一个文件目录下面的一部分文件,那么就需要通配符匹配这部分文件,如何匹配呢?看下面这个例子:load_path_om = ''mdfs://cloudhdfs/new...

2020-06-24 15:06:55 864

原创 用一个例子讲述题目的整体思考方式,优化策略

用一个例子讲述平时练习题目的思路对于平时题目的练习,我们的思路应该是首先考虑暴力解法,因为暴力解法或者叫直接的解法是最容易想到的,他的时间复杂度一般是指数级别的(暴力解法最常见的就是递归(包含回溯和剪枝)、DFS【正向以及逆向的方法】),如pow(2, n);下面的优化就是以及降低其时间复杂度,一般而言要降到高阶的幂函数的级别上,如O(n^2)一般居多,一般采用的方法就是dp。最后就是考虑降到O(n)的时间复杂度,如果涉及到排序就采用二分查找降到O(logn)的时间复杂度。这就是整体的思想。给

2020-06-20 11:10:29 619

转载 Ubuntu 18.04 上使用xrdp远程桌面连接

很多时候我们都会需要对Linux系统进行远程桌面连接,随着Ubuntu 18.04的发布,大伙也慢慢用上了Ubuntu 18.04,下面介绍在Ubuntu 18.04上如何进行远程桌面连接,这个跟之前的版本有一点小区别。首先更新系统源(这里推荐使用国内的源,下载速度快很多),这里用的是清华大学的镜像源,这个源是用在ARM板上的,支持arm64,对于PC上的可以自行搜索替换。deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic mai

2020-06-10 16:56:22 494 2

原创 补充关于2-3树、2-3-4树、B树、B+树、红黑树的相关内容,不从枯涩难懂的定义上理解,从BST的角度逐步理解

2-3树、2-3-4树定义:直接你看网上的各种文档,对于2-3的定义晦涩难懂,我们完全没有必要再次照着搬过来,我们这里采用的是和二叉排序树的对比的角度来考虑到底什么是2-3树。 2-3树 = 二叉排序树 + (2、3节点) + 每一个节点的左子树高度等于右子树的高度。那么我们队这个定义进行一个解读:二叉排序树本身就是左子树的值小于根节点的值,右子树的值大于根节点的值的一种二叉树,换句话说...

2020-04-03 21:20:16 575 2

原创 十大排序算法(内排序)

冒泡排序思路:第一项和第二项如果不满足既定顺序则交换。第二项和第三项如果不满足既定顺序则交换,满足既定顺序不交换,以此类推,可以发现一次排序下来...

2020-03-28 01:10:39 549

原创 关于满二叉树、完全二叉树以及完全二叉树的大根堆小根堆

满二叉树 完全二叉树的定义满二叉树就是每一层节点个数都是满的二叉树。第n层节点个数 = pow(2,n - 1), 总的节点个数 = pow(2, n)。 完全二叉树就是满二叉树从最后一层的最右侧开始去节点得的树,这个去节点只能从右往左去。 满二叉树 完全二叉树关于完全二叉树的几个面试题目一:判断是不是完全二叉树思路:层次遍历:当前节点左子树不空放入queu...

2020-03-20 21:28:23 1413

原创 补充关于二叉搜数树,平衡二叉树

再次介绍关于二叉搜索树二叉搜索树 == 二叉排序树 == 二叉查找树,从后面这两个名称来看,可见这个树对于排序和查找是非常关键的,上一节我们可以看到它的中序遍历是由小到大排序的,因此这就是二叉排序树的由来。那么对于二叉查找树,它为什么这么叫呢? 接下来我们从它的增加(插入、构建)、删除、查询、更改(增删查改)四个方面实现代码并且进行时间复杂度的分析。二叉树查找树的增加(插入、构建)...

2020-03-18 02:09:10 244

原创 剑指offer——二叉搜索树相关内容

首先明确二叉搜索树的概念二叉搜索树又叫二叉排序树,它的定义是: 1 空树是二叉搜索树 2:如果左子树存在,那么左子树的所有节点值均小于根节点; 如果右子树存在,右子树的所有节点值均大于根节点值。 3: 子树也是二叉排序树。 下面就是一颗二叉搜索树。 二叉搜索树的特点:基于此的常见考点就是下面的。 中序遍历是由小到大排序的(因此对于此二叉树转化双向排序列表、寻找第k小的数值、排序...

2020-03-13 19:15:44 112

原创 剑指offer——二叉树的基本理论和常见的题目以及处理方式

二叉树常见考点就是DFS和BFS,其中深度遍历DFS又分为前序遍历、中序遍历、后序遍历,实现方式又分为两种,递归方式以及循环方式。而BFS广度遍历又称层次遍历,实现方式是队列方式,非常容易实现。下面先构建一颗二叉树:如右图。 构建这个二叉树的原因就是这个二叉树有叶子节点,且有单只节点、有多个连续的单只节点,这基本覆盖了二叉树全部的特殊情况。 下面是构建二叉树的DFS的递归和非递归...

2020-03-12 16:57:45 112

原创 剑指offer——整数中1出现的次数、只有2,3,5质数的丑数、数组中只出现一次的俩个数

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)这个题目当然可以采用暴力发处理:这个时间复杂度就大了,基本是O(mn),n是数字...

2020-03-03 14:40:42 285

原创 剑指offer——(关于位运算)整数转化为二进制中1的个数、不使用四则运算实现+、一个数字出现的次数超过数组长度的一半

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。首先明白一些基本的点: 1:在python中,整数没有最大的限制,在C/C++/java里面整数都是32位的,用四个字节表示的。 2:如果我们想自己转化二进制:可以自己写程序,每次取余数;也可以直接使用内置库函数。在python中转化二进制用bin(n),它就对负数直接转化为补码表示了。注意这个个0b表示意...

2020-03-01 21:04:17 127

原创 剑指offer——寻找两个单链表公共节点、循环链表应用及简化、链表环的判断

输入两个链表,找出它们的第一个公共结点。方法一:直接双重循环,O(n^2)时间复杂度,能实现,但时间复杂度太高,必不可行。Temp1 = pHead1Temp2 = pHead2while Temp1: while Temp2: if Temp1 == Temp2: return Temp2 else: ...

2020-02-28 21:39:22 256

原创 剑指offer—单链表的基本知识与构建、倒叙输出链表、合并双排序链表、复制复杂链表

对于单链表的基本写代码的注意点: 1:头节点传进来赋给一个新指针,以保存最开始节点不改变。 2:记忆单链表各种题目的一般模板: while temp: temp = temp.next 3:记忆传入的结构有2种:一种是None,另一种不是None,所以要判断 4:一般的处理新建一些节点,链表都能实现这个功能;但是为了节省空间复杂度,一般尽量利用单一变量在原...

2020-02-27 15:32:17 141 1

原创 剑指offer—栈最后一题(判断栈的弹出顺序是否是该栈的一种)(链表1:基本概念及python描述,单链表倒叙输出,倒叙存储,倒叙输出第k个)

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)本题目刚开始读的时候没有读懂,后来才读懂,那么当时思路就是:直接判断好像不太好处理,每一个...

2020-02-25 18:42:47 158 1

原创 剑指offer—有序数组查找及其变形、奇数在前偶数在后二分数组、模拟栈以及模拟min要求最低时间复杂度

有序数组查找:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0注意,这是一个有序数组的旋转,其实整体分为2个部分,仍然属于有序数组查找的变形,因此采用二分法。 在二...

2020-02-23 23:58:31 145

原创 剑指offer-数组相关(空格替换、二维有序数组查询、两个栈模拟队列)

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。补充C++/C知识关于指针: 人们常说指针就是地址,其实并不懂到底什么意思。其实指针是一个变量,普通的变量,类似于int,float这种变量,只不过它的变量类型是int *,float *等等,这个变量本身就是一个内存地址,...

2020-02-21 20:40:51 123

原创 剑指offer-费波纳数列

费波纳数列: n=0, F(0)=0; n=1,F(1)=1; n>1, F(n)=F(n-1)+F(n-2)这里面一定要注意的是n >= 0, 所以需要判断若n < 0 ,则直接return None.处理办法:第一种很自然的想到递归:def Fibonacci(n): #其实没必要关心n<0,因为此处测试实例这里...

2020-02-12 23:20:08 194

原创 流畅的python(十六)—协程

协程终止 generator.close() 该方法是正确的关闭协程的方法,只要协程按照下面的说法写代码,当调用此函数时,协程立刻关闭;协程关闭后就不能再send数据了,否者会报出StoIteration这个错误。关闭协程除了不能send数据这个方法之外,还可以调用inspect里面的getgeberatorstate()方法返回这个协程的状态,这个也可以判断,一般而言方法就这...

2020-01-16 14:48:51 134

原创 流畅的python(十五)—上下文管理器和else块

详述一下关于程序设计的风格在流畅的python里面列出了关于程序的两种设计风格,分别是EAFP、LBYL。 前者叫 “取得原谅比获取许可更容易” 英文是 “easier to ask for forgiveness permission” 简称EAFP。后者叫做“三思而后行”,英文是“look before you leap”, 简称是 LBYL。 那么二者最本质的区别是什么?h...

2019-12-23 17:40:43 88

原创 python自带类库及其详解

python自带的类库非常多,看这个链接就行:https://docs.python.org/zh-cn/3/library/index.htmlpython的数字和数学模块要注意包含数学函数:mach,以及常见的统计函数:statistics。函数式编程的模块主要涉及的三个部分 operator,functools,itertools这三个部分主要处理的还是函数式编程...

2019-12-21 10:30:52 335

原创 hotpotqa的codalab代码上传步骤

要首先进入师兄的1080Ti的环境中,因为codalab环境是师兄自己添加的,只在他自己的虚拟环境目录中,我们使用自己的账号登陆的话,进入的就是我们的虚拟环境,linux根据我们进入的用户名自动依据环境变量去判断,从而我们进入的就是自己目录。所以必须登陆师兄的账号。 账号:lrh,密码:就是常见的那个。进去之后codalab就是虚拟环境,已经配好了,和linux一致也是一个虚拟环境,所...

2019-12-19 20:38:45 826 1

原创 python框架之Django

https://www.bilibili.com/video/av50837881?p=1 这个链接是Django入门视屏,详细的讲解了基本的配置和使用,想了解源码不适合这个博客。从这个视屏里面获取到的椅一些知识如下: """# ajax在浏览器看不到,在检查里面能看到。由于ajax是在一种请求方式,直接通过流程作用于后端,前端界面不渲染看不到数据显示,但是仍然是前端...

2019-12-11 15:30:55 271 2

原创 流畅的python(七)—装饰器、变量的作用范围

关于main函数一个程序自带一个__name__内置的属性,它在python中准确来说不是主函数的入口,主函数入口只是它功能的一个部分,它核心的功能是为了测试。 在python中,是靠着代码缩进对各个部分进行的判定的,凡是在python代码中直接靠在最左面没有缩进的都是主函数的一部分,无论是直接运行这个代码文件还是将这个代码文件导入其它的文件内部,这部分代码都会立即执行。 __name...

2019-11-25 16:33:03 457

原创 pytorch的加速方法

DataParallel -首先是torch.nn.DataParallel导入(多卡并行)DataParallel 会将module复制到多个卡上,也会将每个batch均分到每张卡上,每张卡独立forward自己那份data,而在backward时,每个卡上的梯度会汇总到原始的module上(但是,这样的方式会造成原始module在的那张卡的显存压力比其他卡要大,也就是这种方式存在...

2019-11-20 22:31:06 570

原创 流畅的python(六)—函数编程(高阶函数)

函数式编程除了常见的几个高阶函数如sorted,min, max,map,filter,更加多的式在functools包里面。 那么常见的往高阶函数里面放的函数一般是lambda函数,自定义函数,内置函数,类定义函数,除了这些主要在operator这个包里面。 这两个包主要核心目的就是为了函数是编程而调用扩展。首先说明一下里面的函数operator,模块提供了一套与Python的内置运...

2019-11-19 20:06:09 105

原创 流畅的python(五)—python3和python2的区别

python3相对于python2不同:1:核心是迭代器,尽可能的返回迭代器。2:map/filter/reduce均为python2内置函数,而python3前两个是内置函数,后面一个不是了。3:print在python2中不需要写括号,但是python3中当他是一个函数,需要写括号。4:python3引入仅限关键字传参。注意传参 形参顺序,分为定位参数关键字参数;关键字参数不一...

2019-11-16 20:12:36 240

原创 python算法(一)—正则表达式

python正则表达式这一块把内容有点多,不能一触而就,每次使用的时候记忆一点,之后基本就都记下来了。在python里面使用正则表达式先要导入包 import re,之后首先要记住re里面经常用的函数,这里详细回忆一下。re.compile()这个函数是根本的目的返回一个pattern。 re.match(pattern, str),从str头开始匹配,匹配到了返回(start_p...

2019-11-06 16:50:07 264 1

原创 流畅的python(四)—字典的映射方法即其它形式

dict里面实现的一些方法,同时包含collections里面的defaultdict和Orderedict,左面是List,为了和LIst对比内置的:+ , +=, *, *+, ~*(__add__, __iadd__, __mul__,__imul__,__rmul__)(mul是list*n,rmul)(rmul是n*list) ...

2019-11-06 14:53:28 133

原创 python的hash函数,hash表

1:产生hash函数的原因是什么?假设我们存在一个简单的键值对结构,键-员工号,值-是否在岗。现在需要这样一个功能,输入员工号,返回该员工是否在岗,理想的方法是创建一个长度为Max(员工号)的数组,数组下标就是员工号,数组中的值用0和1对是否在岗进行区分,这样只需要O(1)的时间复杂度就可以完成操作,但是扩展性不强,存在以下问题。1.假设新进员工的员工号比Max(员工号)还要大,这就...

2019-11-04 21:44:13 520

原创 Word2vec详细解读

NNLM:先熟悉NNLM后再查看下面的链接。https://blog.csdn.net/itplus/article/details/37969979https://blog.csdn.net/itplus/article/details/37998797

2019-10-31 11:48:20 109

原创 流畅的python(三)—list方法、深浅拷贝、python内存分析

list类实现的特殊函数对应的方法以及自己实现的一些方法:内置的:+ , +=, *, *+, ~* (__add__, __iadd__, __mul__,__imul__,__rmul__)(mul是list*n,rmul)(rmul是n*list) for, in, [], [], del ( __iter__,...

2019-10-28 13:59:35 124

原创 流畅的python(二)-序列构成的数组

流畅的python(二)-序列构成的数组目录字符编码复习功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入目录你好! ...

2019-10-27 21:12:32 107

原创 流畅python(一)—数据模型,内置函数

首先明确类的方法的构造:为了类封装性以及方法的封装性,类的方法里面使用的都是内置的函数和外面import导入的函数以及后面自己构造的函数,更为重要的是处理的数据要么是self.__init__里面的数据,要么是传入的数据,要么是其它类函数返回的数据。总之就这么几种情况,首先要明白。那么以后自己书写类里面的函数一定要这样处理。 以后遇到python相关的问题,尽量用类来处理,心中的思想就是和jav...

2019-10-24 09:26:43 133

原创 python常见外部包的使用

1:randomchoice(),里面的参数是一个list,返回list里面的一个随机数。加入这个list只有+-1,那么随便选择一个就可以表示方向,再来一个list用来选择步长,这样选出来的两个乘起来,就能处理随机漫步,在调用plt.scatter绘制点就能将随机漫步绘制出来。...

2019-10-23 14:53:34 298

原创 Matplotlib.pyplot常见方法的使用

Matplotlib里面最重要的一个类是pyplot,所以一般使用时需要 import matpoltlib.pyplot as plt1: plt.plot()作用是画图,画的图是通过散点描述的,如果散点足够多,那么最后画出来且用-连接的话,点与点直接非常拥挤,看起来就像函数曲线;如果点不是太多,用-连起来就是折线图;这两个都是连续的绘制。但是无论点是多还是少,如果不采用-连接,画出来的图...

2019-10-23 14:39:02 688

空空如也

空空如也

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

TA关注的人

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