自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实习生活之字节跳动

博主上半年因为课程少(其实就是闲)的缘故,向各大中小 IT 公司,如字节跳动,360等的实习生岗位投递了简历,广撒网,多敛鱼,择优而从之。最终,博主看中字节跳动的高待遇——一天400,就近租房补贴,免费的一日三餐与下午茶打动(这谁顶得住啊),毅然决然地投入字节跳动的怀抱!谁拦不住我,我说的!如今,我已经离职,特意撰写此博客总结我的实习生活,并希望对大家有所帮助!面试首先,当然是介绍大家最紧张...

2019-07-16 15:23:03 25546 12

原创 《算法导论笔记》——十分钟带你了解二叉搜索树(BST)!

搜索树数据结构支持许多动态集合操作,包括SEARCH(查找指定结点)、MINIMUM(最小关键字结点)、MAXMUM(最大关键字结点)、PREDECESSOR(结点的先驱)、SUCCESSOR(结点的后继)、INSERT(结点的插入)和DELETE(结点的删除)等。因此,我们使用一棵搜索树既可以作为一个字典又可以作为一个优先队列。 二叉搜索树上的基本操作所花费的时间与这棵树的高度成正比。对于...

2018-07-27 20:18:46 32377 10

原创 2020实习笔试题——最有价值数的个数

问题描述对一个数组,求每个数左边比他大的数的最小值,右边比他小的数的最大值,若这两个数成倍数关系,则它为最有价值的数问题分析没什么好说的,两次循环记录每个数左边比他大的数的最小值,以及右边比他小的数的最大值。最后,判断是否有最有价值数。代码示例import bisectnum = list(map(int, input().split()))n = len(num)left_max = [float('-inf')] * nright_min = [float('inf')] * n

2021-03-16 11:29:24 191

原创 2020年实习笔试题——最大的最短路径和

问题描述现有n个人,m座城市,它们的目的地都是x。此外,两座城市的距离不对称。求最短路径的最大值。问题分析两遍Dijstra算法。代码示例def dijstra(n, x, dist, matrix): for j in range(1, n + 1): dist[j] = matrix[x][j] visited = [False] * (n + 1) visited[x] = True while True: t = -

2021-03-16 11:27:28 264 1

原创 阿里2020.3.30笔试题——养鸡场

问题描述给定鸡场数量nnn,养鸡天数mmm,每次增加数量kkk每一天开始时,每个养鸡场都增加k只鸡;每一天结束时,将数量最多的鸡场数量减半(向下取整)问题分析因为每次选择数量最多的鸡场,所以使用大顶堆即可。代码示例import heapq as hpdef solve(): N, M, K = map(int, input().split()) chicken_list = list(map(int, input().split())) chicken_list =

2021-03-15 16:51:24 286 1

原创 阿里2020.4.3实习笔试题——格子体力

问题描述一个n*m的矩阵格子,每个格子的值是体力,每经过一个格子需花费相应的体力,求从上方越过矩阵到达下方的最小体力花费。问题分析堆优化的动态规划。代码示例class Node: def __init__(self, x, y, dist): super().__init__() self.x = x self.y = y self.dist = distclass MinHeap: def __init__(se

2021-03-15 16:28:26 367

原创 阿里2020.3.23笔试题——走迷宫

问题描述小强在玩一个走迷宫的游戏,他操控的人物现在位于迷宫的起点,他的目标是尽快的达到终点。每一次他可以选择花费一个时间单位向上或者向下或者向左或者向右走一格,或是使用自己的对称飞行器花费一个时间单位瞬移到关于当前自己点中心对称的格子,且每一次移动的目的地不能存在障碍物。具体来数说,设当前迷宫有nnn行mmm列,如果当前小强操控的人物位于点A(x,y)A(x, y)A(x,y),那么关于点AAA中心对称的格子B(x′,y′)B(x', y')B(x′,y′)满足x+x′=n+1x + x' = n + 1

2021-03-15 16:23:02 864 2

原创 阿里2020.3.23实习笔试——队伍选择

问题描述现有nnn个人,从中选择任意数量的人组成一支队伍,再从这些人中选出1名队长,求不同方案数对∣109+7∣|10^9 + 7|∣109+7∣ 的结果。如果两个方案选取的人的集合不同或选出的队长不同,则认为这两个方案是不同的。求输入任意人数nnn得到的队伍数。问题分析典型的排列组合问题。因为从nnn个人中选择任意数量的人组成队伍,则依次有Cn1,Cn1,…,CnnC_n^1, C_n^1, \dots, C_n^nCn1​,Cn1​,…,Cnn​中选择方式。然后,在这些队伍中选择一个人作为队长,即

2021-03-15 16:17:23 159

原创 阿里2020.4.1实习笔试题——翻转01字符串

问题描述给一串二进制字符串如00011001,希望把他改为全为0,如果更改某个字符,那么他两边的字符也要更改,例如把第二位的0换成1,那么就变成了11111001. 求最少翻转次数。如果无法全0,输出NO。问题解析因为每翻转当前字符,其相邻字符也会翻转,所以每当遇见为1的字符时,将它下一个的字符进行翻转。因为这样做可以保证之前的字符全部为0,即本次翻转不会影响之前的结果。如此循环迭代之后,判断最后一个是否为0即可。代码解析def flip(s, i): def __flip(s, i):

2021-03-15 16:07:12 2228

原创 阿里2020.4.1实习笔试题——攻击怪兽

问题描述有NNN个怪兽,MMM个弓箭,每个怪兽有生命值,每个弓箭有杀伤力和价值,每个怪兽只能用一支弓箭攻击,弓箭杀伤>=怪兽生命时可消灭怪兽,求使用弓箭的最小价值。如无法消灭,返回-1。问题解析因为目标是消灭怪兽,而且每个怪兽只能被一只弓箭攻击,所以我们应该在优先考虑消灭的基础上,选择最小价值的弓箭。根据这个推理,我们可以将怪兽的生命值非升序排序,并同时将弓箭按照攻击力进行非升序排序。最后,循环遍历能消灭当前怪兽的弓箭,并使用优先队列进行维护,选择价值最小的那一只即可解决该问题。代码解析N,

2021-03-15 15:57:27 257

原创 阿里2020.4.8笔试——木头人攻击

问题描述某人有nnn次机会攻击mmm个怪兽。攻击时,可以一次攻击bbb只怪兽。每个怪兽有aaa滴血,每次攻击能让bbb只怪兽都减一。问题解析很简单。当b>mb > mb>m时,只需判断nnn与aaa的大小关系。nnn大则必定能将mmm只怪兽消灭,反之则一只也无法消灭。当b≤mb \le mb≤m时,因为每次只能选择攻击其中的一部分怪兽,所以需要计算理论上的最大攻击数attacknum=n∗b/aattack_num = n * b / aattackn​um=n∗b/a,如果atta

2021-03-15 15:46:26 130

原创 阿里2020.4.13实习笔试题——蚂蚁森林之王

问题描述森林里有nnn只动物,编号从1到nnn,编号越小的动物能力越大。他们想投票选出森林之王,每只小动物可以投票选自己,或者与自己的偶像投票相同;如果没有偶像,就只能投自己。 已知小动物是否有偶像以及具体是谁,求每个人能够得到的最高票数是多少?问题分析崇拜的关系是传递的,如果崇拜关系当做树的一条边,题目所求即以iii为根的某棵树的节点数。此外,因为动物顺序是按照能力从大到小排序,所以后向遍历有ans[A[i]]+=ans[i]ans[A[i]] += ans[i]ans[A[i]]+=ans[i]

2021-03-15 14:43:14 802

原创 阿里2020.4.10笔试题——取水最小距离和

问题描述二维格点上有nnn座房子,小强打算修一条平行yyy轴的水渠,水渠无限长,现在求小强修水渠的位置,能使得这nnn座房子到水渠的处置距离和最小,输出最小距离和。问题分析因为水渠是平行于yyy轴,且长度无限,所以本题的距离和只需考虑横坐标。因此,只需计算所有房子的中间位置(横坐标),再一一计算房子到水渠的距离,即可求解。代码示例n = int(input())row_list = []for _ in range(n): row, _ = map(int, input().spli

2021-03-15 10:20:05 327

原创 阿里2020.4.10笔试题——方格染色

问题描述给定一个m×nm \times nm×n的方格,有ccc种颜色的染料,每一种染料有c[i]c[i]c[i]升,每涂一个格子需要1L,对于某个格子上下左右4邻域的格子不能染成和本身格子一样的颜色,求是否能够找到染色方案?(保证升数总和和格子总数一致。)问题分析由抽屉原理可知,把多于nnn个的物体放到nnn个抽屉里,则至少有一个抽屉里的东西不少于两件。此外,因为相邻格子的横纵坐标和奇偶性不同,所以可以将奇数视作一种组合,偶数视作一种组合。因此,当有一种染料的升数多于某一种集合大小,则必定存在相邻各

2021-03-15 10:09:50 711

原创 NPM安装任何包都报错的解决方法

博主最近搬砖辛苦,前面刚搬完数据库的砖,现在就要和前端对接测试了。然而,把前端文件下载完毕,安装依赖时却报一大堆错误。天坑!因此,博主记录踩坑过程,希望能帮助大家。npm ERR! Windows_NT 6.1.7601npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "express"npm ERR

2020-05-28 15:29:28 2382

原创 服务器ftp搭建记录

最近,博主应组内学习(搬砖)需要,为组内服务器搭建了 ftp 服务,踩坑较多。因此,博主撰写此博客,希望对大家有所帮助。简介FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。FTP支持以下三种认证模式:匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。

2020-05-19 21:04:41 275

转载 Elasticsearch 学习笔记

简介Elasticsearch 是一个实时分布式搜索和分析引擎,基于开源搜索引擎库 Apache Lucene™ 。但是,Lucene 只是一个库。想要使用它,你必须使用 Java 来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene 非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsearch 也使用 Java 开发并使用 Lucene 作为其核心来实现...

2020-04-11 17:01:02 290

原创 Docker 学习笔记

简介Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。优点Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使...

2020-04-10 16:47:54 781

原创 Docker ToolBox 镜像加速

博主在最近学习 docker 的过程中,遇到了一大通病 —— 速度太慢!想必大家也深受其扰。然而,由于环境问题 win10 home + docker toolbox, 博主翻来找去,也没怎么找到适合的方法(网上大多是 docker 的方法)。幸亏博主最终找到了一篇博客 Docker Toolbox 镜像加速 ,终于填坑完毕。在讲述步骤之前,大家可以预先查找合适的镜像地址。docker官方中...

2020-02-17 21:28:59 293

原创 Ctags 学习笔记

本人在最近的学习过程中接触到了 ctags 工具。使用 Vim 的同学对此一定不陌生,它可以帮助 Vim,Emacs 等编辑器使用代码跳转,堪称程序员的神器。因此,本人特此撰写笔记分享给大家。本篇博客参考了ctags使用详解程序员的七种武器之CtagsExuberant Ctags中文手册简介Ctags 是一种编程工具,可生成在各种编程语言的源文件和头文件中找到的名称的索引文件 ...

2020-02-16 22:14:07 412

原创 ROUGE 和 pyrouge 安装配置

从事摘要生成的同学们对 ROUGE 一定不陌生。它是由微软亚研的大佬 Chin-Yew Lin 提出并提供了官方的工具包。然而由于 ROUGE 官方包基于 Perl 语言开发,且太过陈旧,而作者对其也一直不闻不问,导致大家在安装配置时踩了无数的坑(作者当时安装时都快哭了)。因此,为了帮助大家不再踩坑,本人特地总结各优秀博客,希望有所帮助!从头再来:在虚拟机上搭建ROUGE和PyROUGEROU...

2020-02-14 20:06:47 251

原创 多边形周长等分

博主在面试字节跳动实习生岗位时,遇见了 nnn 多边形周长 kkk 等分的问题。其原题是所有边都为水平边或者垂直边。而这里博主给出更通用的版本——希望能对大家有所帮助。简介给定 nnn个点的坐标 f1(x1,y1),f2(x2,y2),…,fn(xn,yn)f_1(x_1, y_1), f_2(x_2, y_2), \dots, f_n(x_n, y_n)f1​(x1​,y1​),f2​(x...

2019-07-16 15:12:20 1203 1

原创 LeetCode之接雨水

博主在面试字节跳动实习生岗位时,遇见了接雨水的问题。而刷过 leetcode 的同学们对此也不会陌生,因为它就是 Leetcode 上的原题——Trapping Rain Water。因此,博主在此给出解题思路和解题方案,希望能对大家有所帮助。简介给定 nnn 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。例如,给定数组为 [0,1,0,2,1,0,...

2019-07-16 15:11:32 494 2

原创 LeetCode之链表相加

博主在面试字节跳动实习生岗位时,遇见了链表求和的问题。而刷过 leetcode 的同学们对此也不会陌生,因为它就是 Leetcode 上的原题——Add Two Numbers II。因此,博主在此给出解题思路和解题方案,希望能对大家有所帮助。简介给定两个非空链表来代表两个非负整数。其中,数字最高位位于链表开始位置。它们的每个节点只存储单个数字。我们需要将这两数相加会返回一个新的链表。例如,...

2019-07-16 15:09:43 2886

原创 Leetcode之二叉树翻转

博主在面试字节跳动实习生岗位时,遇见了二叉树翻转的问题。而刷过 leetcode 的同学们对此也不会陌生,因为它就是 Leetcode 上的原题——invert-binary-tree。因此,博主在此给出解题思路和解题方案,希望能对大家有所帮助。简介题目要求十分简单——给定一棵二叉树,将其左右子树进行翻转,如下图所示。从上图中,我们不难看出原二叉树结点的父子关系不变,兄弟关系发生了交换...

2019-07-16 15:08:01 790

原创 竞赛利器——XGBoost学习笔记

经常参加机器学习相关竞赛的同学肯定对 XGBoost 算法并不陌生。它是 GBDT (梯度提升决策树)的一种高效实现,是传统机器学习算法中对真实分布拟合最好的算法之一,是工业界和竞赛屡试不爽的杀器之一。因此,本文将阐述 XGBoost 算法的基本原理和数学论证,希望能帮助大家了解 GBDT 算法和 XGBoost 算法。简介与 Adaboost 算法相同,GBDT 算法也是集成学习 Boos...

2019-07-05 14:36:36 1578

原创 Adaboost学习笔记

在之前的博客集成学习原理小结中,我们谈到了 Adaboost 算法。它凭借其优越的性能和通用性,成为 Boosting 家族中最为经典的算法之一。因此,在本文中,我们将学习 Adaboost 算法,领略其独特的魅力。基本思路在集成学习原理小结中,我们知道 Boosting 算法是一族可将弱分类器提升为强分类器的算法。它的工作机制可总结为:先从训练集中学习得到一个弱学习器,再根据弱学习器的表现...

2019-07-04 15:18:21 242

原创 集成学习原理小结

集成学习(ensemble learning)是非常实用的机器学习方法,屡屡在工业界与机器学习相关的竞赛中大放异彩。然而与支持向量机(SVM),朴素贝叶斯(NB)等传统的机器学习方法不同的是,集成学习本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务,用大白话来说就是——“三个臭皮匠抵过一个诸葛亮”。更加难能可贵的是,集成学习用途广泛,不仅可以用于分类问题,还可以应用在...

2019-07-03 20:17:15 333

原创 Bagging与随机森林算法

注:本篇博客主要参考了博客Bagging与随机森林算法原理总结。在集成学习中,有两个流派—— boosting 派系 和 bagging 流派。前者的特点是各个弱学习器之间有依赖关系,而后者的特点是各个弱学习器之间没有依赖关系,可以并行拟合。其中,随机森林算法便是 bagging 流派的典型代表。Bagging原理我们知道,为了得到泛化性能强的集成,则应尽可能地使弱分类器彼此之间相互独立。...

2019-06-30 11:18:21 1246

原创 Latex常用的数学符号表示

使用 Latex 排版的同学们想必和博主一样,在撰写论文的过程中,大多无法避免数学符号的使用。因此,博主撰写本篇博客,作为学习笔记,并希望对大家有所帮助。注:本篇博客主要参考常用数学符号的 LaTeX 表示方法。指数与下标在 Latex 中,指数命令 ^ 与下标命令 _,可以嵌套使用语法效果a_{1}a1a_{1}a1​a^{1}a1a^{1}a1a^{3...

2019-06-18 12:47:49 9766 5

原创 curl命令学习笔记

博主最近在学习 ES(elastic search) 的过程中,接触到了 curl 命令,并被其简洁而又实用的优点所吸引。因此,博主撰写此博文作为 curl 命令的学习笔记,并希望能对读者有所帮助。本篇博客主要学自阮一峰老师的博客curl网站开发指南。简介curl 是一个利用URL语法在命令行下工作的文件传输工具。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具...

2019-06-16 23:58:12 1249

原创 轻量级Web框架——Flask的新人教程笔记

Flask笔记注:本篇博客只是作为博主的笔记,想要深入学习的同学还是要观看官方教程。前沿“微”:核心简单,易于扩展 --> 不包含许多已有库胜任的功能,但支持扩展。 个人理解:相当于提供一系列接口,开发人员可以根据自身需求进行定制;快速入门一个最小的应用from flask import Flaskapp = Flask(__name__)@app.route('/')d...

2019-03-22 16:37:49 229

原创 多维度缩放——MDS

我们知道,缓解“维度灾难”的一个重要方法就是降维,即通过某种数学变换将原始高维属性空间转变为一个低维空间。而多维度缩放,就是其中的一个经典算法。简介多维度缩放,英文全称为Multiple Dimension Scaling,简称为MDS。其基本想法是: 降维后的低维空间d′d^{'}d′的欧式距离等于原始空间ddd的欧式距离。然而,它又是如何实现的呢?数学推导假定mmm...

2019-02-12 16:52:21 669

原创 详解PCA(主成分分析)原理

在我们之前分类器的讨论中,如SVM、贝叶斯判别等,都假定已给出了特征向量维数确定的样本集,其中各样本的每一维都是该样本的一个特征。然而不同的特征对于分类器设计的影响是不同的,如果将数目很多的测量值不做分析,全部直接用作分类特征,不但耗时,而且会影响到分类的效果,产生“特征维数灾难”问题。因此,我们需要对特征进行选择和提取,即“降维”。简介PCA,全名主成分分析(Principal Compo...

2019-02-12 15:36:04 625

原创 浅谈贝叶斯判别(Bayes)

在现实世界中,由许多客观现象的发生,就每一次观察和测量来说,即使在基本条件保持不变的情况下也具有不确定性。只有在大量重复的观察下,其结果才能呈现出某种规律性,即对它们观察到的特征具有统计特性。特征值不再是一个确定的向量,而是一个随机向量。此时,只能利用模式集的统计特性来分类,以使分类器发生错误的概率最小。这就是贝叶斯判别的基本出发点。简介给定一个输入x\mathbf{x}x,我们想要确定它属...

2019-02-11 16:51:34 13786

原创 十分钟带你了解Fisher线性判别

应用统计方法解决模式识别问题时,一再碰到的问题之一就是维度问题。在低维空间里计算上行得通的方法,在高维空间中往往行不通,如维度灾难等问题。因此,降低维数有时就会成为处理实际问题的关键。简介前面说到,在处理实际问题时,我们可能需要将维度降低以避免维度灾难等问题。我们不妨考虑把ddd维空间的样本投影到一条直线上,形成一维空间,即把维数压缩到一维。当然,即使样本在ddd维空间里形成若干紧凑的互相分...

2019-02-11 10:47:26 761

原创 深入浅出SVM(支持向量机)

支持向量机是机器学习领域中经典的分类算法之一,最早由Corinna Cortes, Vladimir Vapnik于1995年提出。对原论文感兴趣的读者可下载此论文Support-Vector Network简介分类学习的最基本思想就是基于给定的训练集DDD,在样本空间中寻找一个划分超平面,将不同类别的样本分开。假如有一样本集D={(x1,y1),(x2,y2),…,(xm,ym)}D = ...

2019-02-10 11:10:17 3620

原创 原来拉格朗日乘子法这么简单!

在日常生活中,我们经常会遇见带有条件约束的优化问题,如经典的“采购食品”问题等。遇到此类问题时,老师们往往告诉我们使用拉格朗日乘子法解决!它的应用十分广泛,如支持向量机,线性规划等。那么,拉格朗日乘子法到底是什么?它背后的数学原理又是怎样的?本篇博客将为您一一解答。注意,本篇博客只是简单的对拉格朗日乘子法进行介绍和数学推导,并非严格的数学证明!拉格朗日乘子法前面提到,我们往往会遇见带有条件约...

2019-02-09 20:44:17 367

原创 分析算法泛化性能的有效工具:偏差——方差分解

了解机器学习的同学都知道,为了检验学习算法的有效性,我们常常会通过实验估计其泛化性能。可是,在实验过程中我们不难发现,同一学习算法在不同的数据集上效果。这又是为什么呢?“偏差-方差分解”为我们提供了解释依据。简介在通过实验检验学习算法泛化性能的过程中,人们还往往希望了解它为什么具有这样的性能。而“偏差——方差分解”是解释算法泛化性能的一种重要工具。“偏差——方差分解”试图对学习算法的期望错...

2019-02-08 11:59:09 1028

原创 十分钟了解绘图神器——Graphviz学习笔记

DOT语言学习笔记设置点和线的形状与颜色digraph是有向图,graph是无向图。要注意,->和–都表示图中的一条边,但是前者用于有向图中,而后者用于无向图中,不能混用。代码示例diaGraph G{ main -> parse -> execute main -> init main -> cleanup exec

2018-11-30 20:25:00 3118

空空如也

空空如也

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

TA关注的人

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