- 博客(88)
- 资源 (28)
- 收藏
- 关注
原创 统计学习方法啃书指导(一):统计学习方法概论
1. 监督学习概念:就像小时候父母教我们认识一直鸭子,涨了翅膀,嘴巴扁平的是鸭子,当父母给我们指出很多次鸭子的时候,我们就会自己从鸭子身上找到特征。下一次我们再遇见一个动物的时候,就会根据他的特征来判断是否是一只鸭子。举个例子那么在这里就涉及到两个很重要的概念呢,特征值和目标值,从表中我们可以发现,通过一个男生的体重,身高,年龄等信息来判断是否招女孩子喜欢。特征值:体重,身高,年龄,成绩目标值:是否招女孩子喜欢训练集是中包含的很多个数据(x1,y1)这一第一个数据,其中x1是特征值,y
2021-04-07 21:17:19 134
原创 计数排序和桶排序
刷到了一道leetcode算法题,虽然不难,但是却让我寸步难行,因为在此之前,我从未了解过计数排序和桶排序。1. 题目分析这道题看上去不难,但是若不了解计数排序和桶排序的概念,会绕很大的圈子,那我们现在来看一下什么是计数排序和桶排序。2. 计数排序目前我们所了解的最快的排序就是快速排序,但是有没有一些特定的区块,一些排序方式的速度超过快速排序呢?1. 什么是计数排序?计数排序是一种基于下标的排序,给出图解假定20个随机整数的值如下:9,3,5,4,9,1,2,7,8,1,3,6,5,3,
2021-04-02 14:19:29 98
原创 leetcode题目:637.二叉树的层平均值
1. 题目分析一看这道题,我们就能想到按层遍历,一想到按层遍历,我们就想到了队列。基本思想:用队列实现按层遍历给出图解2. 代码实现2.1. Python代码# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left
2021-03-16 20:22:29 55
原创 leetcode题目:141.环形链表
1. 题目分析在这里我们给两个解题思想基本思想1:哈希表遍历链表用一个哈希表来标记被访问过的点若这个点第二次被访问到,则证明这个链表有回路基本思想2:龟兔赛跑算法定义两个指针,一前一后,前面的那个是兔子,后面那个是乌龟,兔子比乌龟跑得快,兔子一次抛两格,乌龟一次抛一格若这个链表没有回路,则乌龟永远也不可能和兔子相遇,若乌龟与兔子相遇,只能说明这个链表有回路给出图解我们今天用第二种基本思想来实现这个算法2. 代码实现2.1. Python代码# Defini
2021-03-16 20:01:08 61
原创 机器学习(三):分类算法
学习分类算法之前,首先目标,什么是分类,分类数据集就是目标值是类别的,比如男,女。简而言之,分类算法就是用来解决目标值为类别的数据集的算法1. 转换器和估计器1.1. 转换器回忆一下特征工程步骤:实例化 (实例化的是一个转换器类(Transformer))调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)我们把特征工程的接口称之为转换器,转换器中封装了所有特征工程需要的方法1.2. 估计器(sklearn机器学习算法的实现)获得一个估计器estimator(估计
2021-03-16 18:54:43 1206
原创 leetcode题目:24.反转链表
1. 题目分析这道题,我们也用两种方法来写基本思想1:反转这种的,我们都可以想到栈这种数据结构利用栈的特性就能解决基本思想2:使用双指针,定义一个前驱指针pre,再定义一个当前节点curcur.next = pre,这样就能实现反转这一次,我们拉钩方法都用,基本思想1我们用java来实现,基本思想2用python来实现2. 代码实现2.1. Python代码(基本思想2)# Definition for singly-linked list.# class List
2021-03-14 17:08:33 43
原创 leetcode题目:22.链表中倒数第k个节点
1. 题目分析这道题主要是有两种思想。基本思想1:我们需要的是返回后k个节点,这让我第一时间联想到了栈的性质设置两个栈,就能解决,下面给出图解准备好我们需要的变量基本思想2:就是我们经常用的双指针,而且是同步的双指针给出图解在这里,我们用栈的方法来实现。2. 代码实现2.1. Python代码# Definition for singly-linked list.# class ListNode(object):# def __init_
2021-03-14 17:00:29 53
原创 leetcode题目:203.移除链表元素
1. 题目分析其实链表删除元素这种算法可以说是很熟练了,但是在这里有一个思想很重要,就是头节点的思想。基本思想:我们只需要遍历这个链表,把对应的元素删除就行了,但是当要删除的是头节点的时候,情况就变得比较复杂了。这个时候我们就在函数中添加一个空节点,让这个空节点的next指向head节点,这样每一次删除都不会是头节点的删除了。给出图解2. 代码实现2.1. Python代码# Definition for singly-linked list.# class ListNode(
2021-03-14 16:40:48 61
原创 leetcode题目:136.只出现一次的数字
1. 题目分析这道题我们用两种思想来做。基本思想1:排序,排序之后相同的数就在一起了。但是这种方式过程比较繁琐,需要考虑的情况有很多,之后会在代码中体现。基本思想2:用按位异或来做。任何数和 0 做异或运算,结果仍然是原来的数任何数和其自身做异或运算利用以上两条性质,到最后,只会剩下一个没有被重复的数字在这里我们用第一种思想做,第二种思想大多数人是想不到的。2. 代码实现2.1. Python代码class Solution(object): def s
2021-03-14 16:29:59 59
原创 leetcode题目:1.两数之和
1. 题目分析看到这种题,我脑子里又习惯性地冒出一个想法,那就是暴力枚举。但是,若我在这里用暴力枚举的话,就失去这篇文章的意义了,我给大家介绍一种更好的方法。基本思想:定义一个字典,字典的key记录数值,value记录这个数值在数组中的下标。起始的时候,这个字典是空的,我们遍历数组,没遍历一个数,我们就用目标值 - 当前值,判断这个值是否在字典中存在,若存在,则返回字典对应的value,以及当前值的下标给出图解(1)准备好我们所需要的的变量2. 代码实现2.1. Python
2021-03-14 16:18:15 46
原创 leetcode题目:121.买卖股票的最佳时间
1. 题目分析这道题,我们要用最简单,最节约内存的方式来做,我们可以用动态规划。基本思想:思考一下,当我们遍历到第n个元素的时候,现在的最高利润就只有两个情况,第一种就是n - 1的利润,第二种就是n - min(n - 1),谁更大,就用谁。、动态规划 前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}设置两个变量,一个用来存储前n项的最小值,一个用来存储前n项的最高利润2. 代码实现2.1. Python代码class Solut
2021-03-12 22:51:17 69
原创 leetcode题目:219.存在重复元素
1.题目分析这道题不难理解,仔细想,换句话说就是给定一个数组,若数组中两个相等元素的距离小于k,返回true,若在数组中不存在这个数,则返回false这里肯定又有人要说话了,暴力解法直接得结果,但是这样显得太low了,我们可以换一种思想。基本思想:维护一个 大小为k的滑动窗口,那么什么是滑动窗口,下面给出图解。这就是个滑动窗口,因为超过距离超过k的两个数我们根本不需要考虑,所以在窗口之外的数就和窗口内的美誉什么关系,接下来我们只需要向右移动这个窗口就行了,这样能节约很大的空间。这个窗口
2021-03-12 22:43:00 51
原创 leetcode题目:101.对称二叉树
1. 题目分析这是一道很经典的二叉树的问题,首先我们分析一下这道题,这道题的题意应该是很明显的,那么我们要怎么来检查是否是对称二叉树呢?仔细分析一下,根节点其实对我们的求解没有太大的影响,我们只需要分析数的左右子树是否对称就行了。基本思想:我们可以用镜像对称的遍历方式来遍历这两个二叉树,说到这里,相信已经有了一些想法了。就拿这张图来说,去掉根节点,对于左子树,我们的遍历方式是,根,左,右对于右子树,我们的遍历方式是,根,右,左,我们来写详细一点左子树:根,左,右数据: 2,3,
2021-03-12 22:12:32 105
原创 leetcode题目:204.计数质数
1. 题目分析那么我们来分析一下这道题,这道题的题意很明显,我们可以使用暴力解法直接解开,但是若我为了这个暴力解法还发一次博文,那就显得我水平有点低了。有一个算法叫做埃氏筛,这个算法就是用来解决这类问题的,主要的思想就是,例如,2是一个质数,那么2 * 2,2 * 3…2 * n必定全是合数,我们可以把这些合数都做个标记,之后再计算这些标记就能得到质数的数量。继续思考,当22,23之后,若我们再遍历到3,那么23已经被标记了,所以我们直接从33开始,就这样,每次遍历都从i * i开始就行了。2
2021-03-12 11:55:49 68
原创 leetcode题目:880.索引处的解码字符串
1. 题目分析1.1. 错误理解大多数人看到这道题的第一反应就是把这个字符串整个还原,再遍历还原后的字符串,就能得到结果了。这是所谓的暴力解法,但是请看清楚,这道题是一道中等题,怎么可能那么简单。若使用暴力解法,提交肯定不会通过,原因是内存溢出,当还原后的字符串很长的时候,就容易造成内存溢出那可能这又有人说了,为了避免这个问题,我们可以多方位思考,因为本体只需要我们去第K个字母,那么我们需要多少就还原多少,没有必要把整个字符串都还原。这样想就太天真了,当K值很大的时候,我们依然需要很长的字符串
2021-03-11 22:46:47 172 2
原创 leetcode题目:682.棒球比赛
1. 题目解析这道题一看就知道是典型的栈的问题。基本思想:创建一个栈,遍历数组,遇到数字就入栈。遇到“C”就将栈顶元素删除。遇到“D”就访问栈顶元素,用栈顶的数字*2,把这个数字入栈。遇到“+”就访问栈顶两个元素,相加之后把这个数字入栈2. 代码实现2.1. Python代码class Solution(object): def calPoints(self, ops): """ :type ops: List[str] :rt
2021-03-11 22:12:22 83
原创 leetcode题目:232.用栈实现队列
1. 题目分析题目已经给的很明显了,用两个栈来实现队列的功能,我们知道,栈和队列的特性是相反的,栈是先进先出,队列是后进先出,我们可以从两个角度来解决问题,一个是出栈,一个是入栈2.1. 从入栈的角度分析仔细想想,栈是先进先出,那么我们只需要把先进的元素变成后进的元素,也就是说将先进的元素压到栈底,那是不是就可以实现先进后出的队列了?下面给出图解1.2. 从出栈的角度分析栈是先进先出,那么我们让原本应该先出的元素,最后出,那是不是也可以实现队列的性质呢?下面给出图解2. 代码实现2
2021-03-11 14:13:11 58
原创 leetcode题目:496. 下一个更大元素
1. 题目分析仔细理解题意,这道题我靠可以通过两个嵌套循环,再做比较来解决2. 代码实现2.1. Python代码class Solution(object): def nextGreaterElement(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ ta
2021-03-11 11:00:15 49
原创 leetcode题目:1598.文件操作日志搜索器
1. 题目分析题目大致我们是可以理解的,那么如何来解决这个问题呢?我们发现,这些退格前进的操作和栈的性质很相似,我们可以考虑用栈来解决这个问题。遍历logs,之后分为四个情况(1) 遍历到’…/‘且当前文件夹是主文件夹(2) 遍历到’…/‘且当前文件夹不是主文件夹(3) 遍历到’./'继续停留在当前文件夹中(4) 遍历到’x/'移动到x文件夹中可以用出栈入栈解决这个问题,进入文件夹就入栈,退格就出栈,若栈为空,当前文件夹是主文件夹知道这些,我们就能轻松实现这些代码了。2. 代码实现
2021-03-11 10:43:25 118
原创 leetcode题目:225.用队列实现栈
1. 题目解析其实题目的信息已经给的比较明显了,就是用两个队列实现栈,不能用栈的特性,只能用队列的特性。我们可以从两个方面来分析这个问题从出队角度从入队的角度接下来我们一一介绍这些两个分析问题的方式1.1. 从出队的角度分析思考一下队列和栈的特性:队列是先进先出,换句话说,是从队头出,队尾入栈是先进后出,从栈尾出,栈尾入接下来问题就变得简单了,我们只需要让队列出队的方式与之前相反就行了,我们能通过两个队列达到这个目的,下面给出图解准备两个队列,queue1,queue
2021-03-10 21:32:32 96
原创 leecode题目:1441.用栈操作构建数组
1. 题目分析相信很多人和我一样,拿到这道题完全不知道是什么意思,那我们来仔细分析一下,我尽量用通俗的语言给大家讲清楚。输入:target(数组)和n(整数)从1到n之间抽出元素组合成和target一模一样的数组并且这里的target元素时严格递增的组合方式:例如输入target = {1,3},n = 3,这其实就是用{1,2,3}这个数组组合成target继续上面的问题,target中有1,所以第一个是Push,将1加入。target中没有2,所以之后是Push,Pop,将2加入再弹出
2021-03-10 20:07:48 100
原创 leetcode题目:844.比较含退格的字符串
1. 题目分析我们来分析一下,题目优点让人不太明白,但是说白了,就是‘#’相当于退格,删除‘#’的前面一个,就是字符串真实的样子,在这里我们很容易联想到栈的先进后出的例子。下面给出一组图解:2. 代码实现2.1. python代码class Solution(object): def backspaceCompare(self, S, T): """ :type S: str :type T: str :rtype:
2021-03-10 18:30:42 149
原创 leetcode题目:155.最小栈
1. 题目分析乍一看好像很简单,不就是定义一个栈嘛,但是注意题目的第一句话,在常数时间内检索道最小元素,也就是说,我们不能等道执行getMin()的时候再来遍历栈中的元素得到最小值,那样就太浪费时间了。那么我们应该怎么办呢?下面给出解决方案条件:不能在getMin()中求最小值栈随时都能得到最小值,而且是在时间很短的情况下。思考:在最短的时间得到最小值,那么最短的时间花费是什么呢?仔细一想,我们就明白了,我们需要在每个操作中时时刻刻记录最小值,道需要的时候拿出来用就行了解决:
2021-03-10 14:44:38 66
原创 leetcode题目:1047.删除字符串中所有相邻重复项
这道题可以说是没有什么难度的,大佬可以略过了。那么我们来分析一下,输入’abbaca’的时候一、分析问题abbacaaaca 删掉bb后的结果ca 继续删掉aa后的结果ca就是我们想要的结果,这个问题让我们很容易就想到了栈的特性,这里我用图解说明一下。2. 给出代码解决方案2.1. Python代码解决class Solution(object): def removeDuplicates(self, S): """ :typ.
2021-03-10 13:45:29 119
原创 机器学习(二):特征工程
目前,sklearn在应用中,主要有四类算法:聚类,分类,回归,降维聚类:即非监督学习的方式,例如我有一堆人,这堆数据是没有男孩或者女孩这些标签的,此时我需要给这堆数据进行聚类,根据一些身体特征,分成两类,并标记为男孩,女孩。分类/回归:监督学习的方式,还是那堆人,但是已经分好类了,男孩,女孩,此时来了一个新人,我根据这个新人的特征,给他归类。降维:如果按照字面意思来理解,那就有问题,当数据集有很多属性的时候,我们此时需要把100个属性变成10个,并不是挑出10个,而是压缩成10个,这10个属性,就集
2021-03-09 15:22:12 2856 1
原创 机器学习(一):机器学习概述
相信很多小伙伴在接触机器学习之前,都有不少的疑问,就是什么是机器学习?机器学习和人工智能有什么关系?机器学习能做什么?这些问题我在这篇文章给大家一一解答。1. 什么是机器学习?机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。1.1. 图解机器学习是指,把人的思考逻辑应用在计算机上,从而让计算机有比人更准确的判断。我们人从大量的日常经验中归纳规律,当面临新的问题的时候,就可以利用以往总结的规律去分析现实状况,采取最佳策略。判断猫和狗这个功能如何实现呢?我们可以把很多猫
2021-03-03 19:36:59 305 2
原创 python数据分析之Mathplotlib
什么是Matplotlib?Matplotlib 是一个 Python 的 2D绘图库,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。接下来,给几个绘图很常用很重要的函数,接着我们再来做实例1. 绘制线形图1.1.简单的线形图import numpy as npfrom matplotlib import pyplot as plt# 生成[0, 2π]之间的等间距的100个点x = np.linspace(0,2 *
2021-03-02 19:11:09 1413
原创 python数据分析之pandas
1.介绍什么是pandas?Pandas(Python Data Analysis Library )是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。为什么要使用pandasPandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具。pandas是基于Numpy构建的,让以Numpy为中心的应用变得更简单。Python、N
2021-02-28 19:35:54 299 2
原创 k8s单机版部署
1.开发环境CentOS7.92. 开始安装2.1.关闭防火墙切换到root用户执行以下命令1.关闭centos自带的防火墙# systemctl disable firewalld# systemctl stop firewalld 2.安装etcd和kubernetes软件(会自动安装docker)# yum install -y etcd kubernetes2.2修改两处配置Docker配置文件/etc/sysconfig/docker, OPTIONS=’–se
2021-02-24 16:31:09 3102
原创 python数据分析之numpy
numpy是什么?NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。为什么要使用numpy?NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。print(list
2021-02-21 23:17:08 499
原创 python网络编程UDP
一、ip和端口我们通过一个简单的图来了解在这个图里,左边的用户要发给右边的用户,信息为‘你好啊’,在发送的时候,其实并不是只封装了信息,还封装了目的ip,目标端口,源ip,源端口,信息发送到网络里,通过目标ip识别到底要给哪台电脑,之后再通过端口识别给目标电脑的哪个进程。程序要收发网络数据,就必须要有端口。端口分为两种,一种是知名端口,一种是动态端口,知名端口默认是0~102380端口分配给了http服务21端口分配给了ftp服务动态端口是从1024~65535端口号是用来标记一
2021-01-19 14:43:10 203
原创 python并发编程(3)新协程asyncio
一、偏函数当我们向减少函数的参数时,我们可以用functools.partial(函数名,参数)来实现import functoolsdef func(a,b,c): return a + b + cnew_func = functools.partial(func,1)result = new_func(2,3)print(result)# 输出结果# 6问题:设置一个基点(3,4),求点(1,2),(3,4),(5,6),(7,8)离基点的距离顺序的排序import
2021-01-18 14:45:41 155
原创 python并发编程(3)协程
由于GIL的存在,导致Python多线程性能甚至比单线程更糟。协程: 协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行.协程由于由程序主动控制切换,没有线程切换的开销,所以执行效率极高。对于IO密集型任务非常适用,如果是cpu密集型,推荐多进程+协程的方式。写一个·简单的协程def run1():
2021-01-18 12:05:20 133
原创 python并发编程(2)多进程
进程:以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存的管理,网络接口的调用等,对各种资源管理的集合,就可以称为进程,进程要操作cpu,必须先创建一个线程,所有在同一个进程里的线程是共享同一块内存空间的进程的状态就绪态:运行的条件都已经满足,正在等在cpu执行执行态:cpu正在执行其功能等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态进程的创建python的multiprocessing模块是跨平台版本的多进程模块,在multiprocessin.
2021-01-15 20:42:34 96
原创 python并发编程(1)多线程
一、线程的创建原理:线程抢夺cpu时间片,谁抢到了谁就执行,在python中,当一个线程运行100个字节后,会自动释放时间片。重新抢夺。启动多个线程(函数方式)在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。 一般接收两个参数线程函数名:要放置线程让其后台执行的函数,由我们自已定义,注意不要加();线程函数的参数:线程函数名所需的参数,以元组的形式传入。若不需要参数,可以不指定。import threading
2021-01-15 18:00:44 199
原创 python之魔法方法
一、属性访问控制,二、描述符,三、构造自定义容器,四、上下文管理器,五、比较运算符,六、str和repr方法,七、call方法
2021-01-14 12:22:42 91
原创 python的私有化问题
首先明确一点,在python中,并没有绝对的私有化。在Python中,没有绝对在外部访问不了的变量,但Python代码应遵循一个规范:以单个下划线开头的变量或方法应被视为非公开的API,因此不用特别声明,外部的调用者也不应该去访问以单下划线开头的变量或方法,因为类的设计者也遵循着这个规范,他会默认外部的调用者不会访问这种变量(但是如果硬要调用也是可以的)。另外,Python通过一个非常简单的机制完成了一个伪私有化功能,这个机制名叫名称转写(name mangling):以双下划线开头,并以最..
2021-01-13 16:02:41 228
C/C++:运动会分数统计问题.rar(含注释)
2021-03-04
C/C++:符串排序.rar(含完整注释)
2021-03-04
C/C++:二叉排序树.rar(含完整注释)
2021-03-04
C/C++:一元多项式的表示及其运算.rar(含注释)
2021-03-04
C/C++:八皇后问题.rar(含完整注释)
2021-03-04
C/C++:二叉排序树中的最小结点和最大结点.rar(含完整注释)
2021-03-04
C/C++:算术表达式求值问题.rar(含完整注释)
2021-03-04
C++:马踏棋盘问题(非递归)(含完整注释).rar
2021-03-04
C/C++:任意长的整数加法.rar(含完整注释)
2021-03-04
C/C++:敢死队问题求解.rar(含完整注释)
2021-03-04
C/C++:小球下落问题求解.rar(含完整注释)
2021-03-04
C/C++:简单书目管理系统.rar(含完整注释)
2021-03-04
C/C++:哈夫曼编译码器.rar(含完整注释)
2021-03-04
C/C++:宿舍管理查询软件的设计.rar(含完整注释)
2021-03-04
C/C++:二叉树的非递归遍历及其他操作(含完整注释)
2021-01-10
C语言:学生信息管理系统(含完整注释)
2021-01-09
C语言:基于散列表的电话号码查询系统(含完整注释)
2021-01-08
C语言:航空客运订票系统的设计(含完整注释)_飞机订票系统设计C语言
2021-01-08
C语言:基于哈希表的姓名查找(含完整注释)
2021-01-08
C语言:模拟计算机器程序(含完整注释)_计算机二级c语言难吗
2021-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人