- 博客(111)
- 资源 (6)
- 收藏
- 关注
原创 算法日记本 | LeetCode 75. 颜色分类
题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...
2019-05-01 12:37:47
424
原创 算法日记本 | LeetCode 42. 接雨水
题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6分析解答这是一道非常生活化的题目,乍一看感觉无从下手。那我们就...
2019-04-30 22:21:06
352
1
原创 使用Python解决LeetCode算法题
Github仓库地址: https://github.com/coolboygym/leetcode-python本仓库主要记录自己在LeetCode上AC的代码,全部使用Python实现。其中一些代码参考了评论区中的高票回答,在代码中给出了参考链接,在此感谢各位网友的无私分享。对于每一个问题,代码中的关键部分会标有简要的注释,如果有多种解法也会以Solution1、Solution2等方式...
2019-04-27 19:39:32
594
原创 算法日记本 | LeetCode 4. 寻找两个有序数组的中位数
题目描述给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是...
2019-04-05 13:47:49
440
翻译 Python中的Monkey Patching (猴子补丁)
在Python语言中,monkey patch 指的是对于一个类或者模块所进行的动态修改。在Python语言中,我们其实可以在运行时修改代码的行为。# monk.py class A: def func(self): print "func() is being called"我们会在下面的代码中使用上述定义的模块,并在通过在运行时指定不同的值来修改函数func()的行为。im...
2019-03-29 11:44:01
1634
1
原创 算法日记本 | LeetCode 239. 滑动窗口最大值
题目描述给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值---------...
2019-03-21 21:04:11
342
原创 算法日记本 | LeetCode 23. 合并K个排序链表
题目描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6分析解答...
2019-03-20 11:12:41
380
翻译 Python中的浅拷贝和深拷贝
本文翻译自copy in Python (Deep Copy and Shallow Copy),讲述了在Python语言中浅拷贝与深拷贝的不同用法。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权行为。码字不易,感谢支持。以下为全文内容:在Python中,赋值语句不复制对象,它们只是在目标和对象之间创建绑定。当我们使用=运算符时,用户认为这会创建一个新对象;好吧,其实并没...
2019-03-17 20:21:44
311
原创 算法日记本 | LeetCode 146. LRU缓存机制
题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少...
2019-03-15 18:37:40
249
原创 算法日记本 | LeetCode 98. 验证二叉搜索树
题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6...
2019-03-15 13:12:13
253
原创 程序人生 | 谁动了我的代码?
已经夜里十一点了,周锦峰仍端坐在办公桌前,盯着屏幕上的代码死命地挠头。明天就要上线了,代码却依然没有完全通过。周锦峰很疑惑,明明上周五刚刚做了集中测试,当时全都没问题的,按理说这周代码的改动也不多啊,团队就六七个人,大家提交代码之前都互相审阅,怎么就报错了呢?更让他想不通的是,屏幕上这个错误他隐约记得几个月前出现过,当时查了好多资料,最后用了一种很取巧的方法解决了,怎么今天又出现了呢?不幸的是,...
2019-03-10 12:41:41
617
原创 深入理解Git原理 | 移除子模块
子模块是一个有趣的概念,它可以让我们在一个项目中包含另一个项目的代码,同时保持两者的相对独立性。如果几个模块的更新都很频繁,那么使用子模块可以为开发者提供很大的灵活性。但是,如果子模块的代码很少更新甚至几乎不更新,比如代码可能已经很稳定了,那么我们需要考虑将子模块的代码打包后通过安装包的形式来引用,而不再使用子模块。这种时候我们需要从项目中移除子模块。移除子模块和移除一个普通的文件相比没有太大差...
2019-03-01 11:08:36
962
转载 深入理解Git原理 | reset 和 checkout
理解 reset 和 checkout 的最简方法,就是以 Git 的思维框架(将其作为内容管理器)来管理三棵不同的树。 “树” 在我们这里的实际意思是 “文件的集合”,而不是指特定的数据结构。 (在某些情况下索引看起来并不像一棵树,不过我们现在的目的是用简单的方式思考它。)Git 作为一个系统,是以它的一般操作来管理并操纵这三棵树的:树用途HEAD上一次提交的快照,下一...
2019-02-22 16:30:57
851
转载 深入理解Git原理 | 祖先引用
祖先引用是一种指明一个提交的方式。 如果你在引用的尾部加上一个 ^, Git 会将其解析为该引用的上一个提交。 假设你的提交历史是:$ git log --pretty=format:'%h %s' --graph* 734713b fixed refs handling, added gc auto, updated tests* d921970 Merge commit 'phedd...
2019-02-21 16:20:28
335
翻译 深入理解Git原理 | detached HEAD 的含义与用法
关于detached HEAD,在你使用Git的过程中,很可能永远不会遇到这种看似“神秘”的状态。但是,如果有那么一天,你应该很想知道究竟什么是“detached HEAD”,以及你如何能进入那个状态。理解checkout是如何工作的使用“git checkout”命令,你可以切换到项目的指定版本,然后Git将所有该版本中的文件放在你当前的工作文件夹中。通常来说,你使用分支名称与“git c...
2019-02-20 20:22:19
5069
转载 深入理解Git原理 | 文件的三种状态
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。Git 仓库目录是...
2019-02-20 16:42:57
544
原创 程序人生 | 阿里面试小记
背景:大三下 实习面试 坐标上海 Java研发其实接触Java满打满算也就一年不到,因为最近经常在用,就想试一下。提前半小时到达面试的酒店,HR小姐姐领着去签了到,然后就到了候场区。放眼望去,坐满了来面试的同学,有的眉头紧锁,貌似在看笔记;有的三人一排正热烈地讨论着。我独自一人,昂首阔步,坐到旁边没人的椅子上,默默掏出自己的武林秘籍——面试宝典。所谓知己知彼百战不殆,加上本科生资质尚浅,在这面...
2019-02-02 17:33:19
10617
2
原创 Pandas必知必会 | 检测数据集中的异常值
在数据集中如果某一个观察值不寻常地大于或者小于该数据集中的其他数据,我们则称之为疑似异常值。疑似异常值的存在,会对随后的计算结果产生不适当的影响,检测疑似异常值并加以适当的处理是十分必要的。一种经典的计算数据集中疑似异常值的方法是Tukey method。该方法先计算出数据集的四分之一分位数(Q1)和四分之三分位数(Q3),从而计算出四分位数间距(IQR),然后将小于Q1 - 1.5IQR或者大...
2019-02-02 15:34:12
7087
原创 Pandas必知必会 | 处理缺失值
在数据分析时我们经常会碰到缺失值。Pandas中为处理缺失值提供了如下函数:方法说明dropna基于每一个标签中是否包含缺失值来过滤某个维度的数据,可以手动设置能够承受的阈值fillna使用给定的值或者某种内置的填充方法比如 ffill 或 bfill 来填充缺失值isnull返回布尔值标明哪些值是缺失值或NAnotnullisnull的反面...
2019-02-02 14:31:52
452
原创 Windows10忘记开机密码的解决办法
问题描述给电脑设置开机密码可以很好地保护个人的隐私信息,但有时候一些老电脑很久没用了,某天忽然想起来里面还有一些重要数据,却发现开机密码早就不记得了。这个时候我们可以采取一些技术手段来重置开机密码。解决方案大体来说,我们需要制作一个U盘启动盘,通过启动盘绕过密码登进系统后修改用户的密码,然后再重新开机登录。具体操作流程请参考:老毛桃重置开机密码教程在此也提醒各位,Windows电脑可以通...
2019-02-02 10:52:04
5118
1
原创 Pandas必知必会 | 在DataFrame中检索数据
有许多方式可以从一个DataFrame中检索需要的数据,以下是一些常用方法的汇总:方法说明df[val]从DataFrame中选取一列或者若干列。有一些特殊用法:布尔数组(过滤行),切片(过滤)或者一个布尔值的DataFrame(基于某种规则设置新值)df.loc[val]通过label在DataFrame中选取一行或者若干行df.loc[:, val]通过...
2019-02-01 16:15:11
10708
转载 深入理解Git原理 | 分布式工作流程
原文链接同传统的集中式版本控制系统(CVCS)不同,Git 的分布式特性使得开发者间的协作变得更加灵活多样。 在集中式系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相像。 而在 Git 中,每个开发者同时扮演着节点和集线器的角色——也就是说,每个开发者既可以将自己的代码贡献到其他的仓库中,同时也能维护自己的公开仓库,让其他人可以在其基础上工作并贡献代码。 由此,Git 的分布式...
2019-01-31 23:10:56
493
原创 【已解决】UnicodeEncodeError: 'ascii' codec can't encode characters: ordinal not in range(128)
问题描述一段Python程序,在Pycharm里面能够正常运行,在命令行中运行时报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 790-791: ordinal not in range(128)解决方案该错误是由于系统语言的编码导致的,修改相应的环境变量即可。在命令行执行:export ...
2019-01-17 09:24:14
2218
原创 深入理解Git原理 | 附注标签
Git 使用两种主要类型的标签:轻量标签与附注标签。通常我们使用的是轻量标签,一个轻量标签很像一个不会改变的分支,它只是一个特定提交的引用,本质上是将提交校验和存储到一个文件中,没有保存任何其他信息。 创建轻量标签,只需要提供标签名字:$ git tag v1.4$ git tagv0.1v1.0v1.4然而,附注标签是存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;...
2019-01-15 09:29:10
816
2
原创 深入理解Git原理 | 移除文件
如果是在文件还未纳入 Git 的管理时就不想跟踪该文件,可以在 .gitignore 文件中加入该文件的模式。如果文件已经纳入 Git 的管理,此时要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。比如:$ rm PROJECT...
2019-01-14 21:29:24
284
转载 深入理解Git原理 | 文件的生命周期
在 Git 工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态...
2019-01-14 12:55:30
343
原创 深入理解Git原理 | glob模式
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。.gitignore文件可以使用标准的 glob 模式匹配。所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个...
2019-01-13 22:26:12
510
原创 【已解决】Python Pickle报错:OSError: [Errno 22] Invalid argument
问题描述在Python代码中使用Pickle模块dump一个对象,报错:>>> with open(path, 'wb') as f:>>> pickle.dump(self, f)Traceback (most recent call last): File "<stdin>", line 1, in <module>...
2019-01-12 10:52:11
4085
翻译 在XGBoost中通过Early Stop避免过拟合
本文翻译自Avoid Overfitting By Early Stopping With XGBoost In Python,讲述如何在使用XGBoost建模时通过Early Stop手段来避免过拟合。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权行为。码字不易,感谢支持。以下为全文内容:过拟合问题是在使用复杂的非线性学习算法时会经常碰到的,比如gradient bo...
2018-12-15 22:10:58
8152
原创 使用Python计算bootstrap置信区间
bootstrap置信区间假设总体的分布F未知,但有一个容量为n的来自分布F的数据样本,自这一样本按有放回抽样的方法抽取一个容量为n的样本,这种样本称为bootstrap样本。相继地、独立地自原始样本中抽取很多个bootstrap样本,利用这些样本对总体F进行统计推断,这种方法成为非参数bootstrap方法,又称自助法。使用bootstrap方法可以求得变量(参数)的置信区间,称作boot...
2018-12-02 17:53:07
9999
原创 使用SQL计算AUC值
背景在开发一些机器学习应用时,经常需要展示模型的ROC曲线以及AUC值。我们固然可以在代码中编写函数或者直接调用已有的软件包来计算,但在某些场景下当面临的数据量很大时,网络的传输可能会影响系统的性能。这种情况下可以考虑直接在SQL语句中计算,而不需要将数据传回到客户端,从而提升效率和稳定性。实现计算AUC值需要两个参数:模型的输出值和样本真实的标签。我们可以假设数据库中有一个表用来保存这两个...
2018-12-02 17:07:00
3678
1
原创 微信公众号开发实战 | 01:环境配置
前言在本系列的博客中我们将从零开始搭建一个基于Node.js和Koa2框架的微信公众号后台。读者最好具备一定的后台开发经验和微信公众号的知识,你可以通过我之前写的这篇文章来了解微信公众号开发的基本原理。本系列教程以实操为主,对于其中涉及到的语言和框架的原理不做赘述,想要深入了解的读者可以阅读相应的官方文档。博客中的代码对应的github地址在这里,在开发过程中遇到任何问题可以加入开发者QQ群(8...
2018-11-04 14:07:09
767
1
原创 Docker容器的时区设置
Docker作为一款优秀的开源容器管理工具,能够帮助开发者一键式地在各个平台上运行自己的应用而无需考虑环境兼容问题,已经成为目前主流的应用部署方案。在使用Docker容器时,可能碰到的一个问题是时区的设置,因为Docker容器内默认的时区是UTC,这一点可以通过date命令来验证。分别在宿主机和Docker容器内运行date命令,观察两者的输出是否相同$ date2018年10月29日 星...
2018-10-29 09:15:06
1913
原创 《计算机是怎样跑起来的》阅读笔记
前言其实不仅是计算机,其他学问亦是如此。首先要划出一个“知识的范围”,精通一门学问所必知必会的知识都在这个范围内。其次是掌握该范围内每个知识点中“基础中的基础知识”。最后是能独当一面的“目标”,即掌握了这些知识可以做什么。1.3 软件是指令和数据的集合无论是哪个程序,其内容都是数值的罗列,每个数值要么是指令,要么是数据。1.5 只要理解了三大原则,即使遇到难懂的最新技术,也能轻松...
2018-09-20 08:01:14
676
原创 《MySQL必知必会》学习笔记
了解SQL数据库是一个以某种有组织的方式存储的数据集合。表具有一些特性,这些特性定义了数据在表中如何存储,如可以存储什么样的数据,数据如何分解,各部分信息如何命名,等等。描述表的这组信息就是所谓的模式,模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)。检索数据如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义。返回数据的顺序可能是数据被添加到表中的...
2018-08-12 00:02:28
252
原创 交叉验证的原理与用法
引言在机器学习中,交叉验证(cross validation)是一种用来做模型选择的方法。如果给定的样本数据充足,我们可以随机地将数据集切分成训练集、验证集和测试集,训练集用来训练模型,验证集用于模型的选择,而测试集用于最终对方法进行评估。然而实际情况中数据往往是不够充分的,为了更好地选择模型,可以使用交叉验证的方法。原理具体而言,当我们开始一个机器学习的建模工作时,首先会将数...
2018-06-23 09:31:04
8478
原创 【已解决】tensorflow官网无法访问
问题描述想看一下tensorflow的官方文档,却无法访问 https://www.tensorflow.org解决方案官网地址已经改变!现在的地址是 https://tensorflow.google.cn ,直接访问即可!令人疑惑的是,不知道为什么Google出来的结果包括github上文档给的官方地址还是https://www.tensorflow.org,有了解的朋友可以...
2018-06-18 08:49:58
5272
1
原创 使用pytest进行Python自动化测试
简介与安装pytest是一个针对Python的自动化测试框架,它可以使简单的和可扩展的测试变得容易。使用pytest进行测试是简洁和可读的,不需要样板代码,这使得我们可以很方便地进行自动化测试。pytest是一个全平台通用的工具,支持的Python版本包括Python 2.7, 3.4, 3.5, 3.6, Jython, PyPy-2.3和通常的Python第三方模块一样,pytest可...
2018-06-17 10:51:25
5706
原创 【已解决】PyCharm中出现unresolved reference error
问题描述从GitHub上克隆的Python项目,在本地使用PyCharm打开,发现在某个文件的头部导入模块的部分报错Unresolved reference 'pytools',出错的代码如下所示from pytools.model import baseline解决方案我们先来看一下整个项目的基本结构:pytools-- note-- model -...
2018-06-17 07:25:47
4427
原创 Scikit-Learn 中文文档完整目录
Scikit-learn是一个开源的机器学习工具包,集成了各种常用的机器学习算法和数据预处理工具。Apachecn是一个专注于优秀的开源项目维护的开源组织,在热心网友的共同努力下,对Scikit-learn的文档进行了中文翻译,详情见scikit-learn中文文档。本文按照个人的阅读偏好对该文档做了一个目录,便于使用时的检索。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权行...
2018-06-13 09:36:10
2263
2
吴恩达机器学习课程CS229课件
2018-07-28
Linux Shell 脚本攻略(中文版)
2017-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人