一只青蛙跳出来的分治法、回溯法与动态规划

从2018年7月份开始,基础薄弱的我从0开始刷LeetCode题目。目的性很明确,也很简单——就是为了提高解决问题的思考实践能力,也为了提升自己的核心竞争力。也许,牛人会觉得这并不算什么竞争力。是的,我同意的。但,这是我目前能做的比较基础的事情罢了。迄今(2018年12月28日)为止,已经刷了108道题目。顺序基本上是按照出现的频率(Frequency)来刷的,这个频率在LeetCode上需要订阅后才可以看得到。那么在刷了108道题目后,有那么一些题目会觉得“似曾相识”了,也会有一种触类旁通的感觉了。所以,我觉得应该适当放慢刷题的速度,同时做做总结了。所以,计划了一项视频解说计划,在YouTubeh和B站都建立了《小旭解说算法之路》的频道,欢迎订阅,多多提建议。那么,进入正题。经过了108道题的历练之后,我来说说对于分治法、回溯法和动态规划的理解。我觉得他们三者是一个相互有交集的概念,并不... Read More

最大流问题之 Ford-Fulkerson 算法

Ford-Fulkerson算法(亦即标号法?)的输入与步骤如下输入给定一个容量为c的图G=(V, E),源点s与汇点(终点)步骤对图G中每一个边(u, v)的流量f(u, v)进行初始化为查询过程:寻找(DFS、深度优先搜索方式)图G中的一条路径p,其中每一条边(u, v) ∈p,都有fc(u, v) = c(u, v) - f(u, v) > 0(c(u, v) 代表当前边的容量,f(u, v) 代表当前边已有的流量,即c(u, v) - f(u, v)代表当前边可用的最大流量,即剩余流量调整过程:计算当前路径下每条边的最小剩余容量,cf(p) = min{fc(u, v) : (u, v) ∈p},然后对于每条边进行如下操作f(u, v) = f(u, v) + cf(p) (前向狐f(v, u) = f(v, u) - cf(p) (后向狐往复上述2与3步骤,直至无法找到路径p为止... Read More

滴滴出行业务平台研发岗位内推

有意者欢迎骚扰:huxu@didichuxing.co更新于:2018.05.25 15:5【在线业务研发工程师(PHP/Golang)我们需要一个这要的你有志于参与一场出行行业的变革;对于大流量高并发业务场景的技术挑战心潮澎湃。用你的代码影响成千上万人负责快车、专车、拼车、优步、优享、出租车等核心业务的服务端研发工作;负责接送机、站点拼车、跨城、小巴等垂直出行场景的服务建设和通勤、休娱、商旅等新出行场景孵化。【中台建设&中间件研发工程师/众里寻你千百度每一次将复杂世界变得简单都让你心花怒放;每一次你的系统都能云淡风轻跨越一座座流量洪峰,而你依然心若止水。你来协助我们提升生产力负责打磨现有产品业务流程,深入了解司乘两端业务,对出行场景进行抽象优化;负责出行中台&中间件架构设计和优化工作,提供新业务的快速扩展和接入能力。有意者欢迎骚扰:huxu@didichuxing.co... Read More

[维护中]基于文本图形(ncurses)的文本搜索工具 ncgrep

源码下载http://github.com/ncgrep/ncgrencgrep dem背景作为一个 VIM 党,日常工作开发中,会经常利用 grep 进行关键词搜索,以快速定位到文件。如图利用 grep 进行文本搜索但是,这一过程会有两个效率问题展示的结果无法进行直接交互,需要手动粘贴文件路径在打开展示的结果没有进行分组,直接将结果罗列出来可想而知,当搜索的内容结果集比较大时,可谓痛苦。那可以用 Vim 中的 Ag 插件进行搜索啊?是的,但他只解决了交互的问题。仍然没有解决结果集分组分类的痛点。在 vim 下利用 ag 进行文本搜索思路在使用 Eclipse 等 IDE 进行文本全局搜索时,在加载效果(懒加载)可视化方面有很大优势。在 Eclipse 下进行全局文件搜索那么,期望基于 linux 系统,提供一个类似的搜索工具。优点(功能)如下结果集可以直接交互结果集可以进行分组展示... Read More

[开发中]基于树莓派的智能家居项目的设想与实现 Hestia

注:本文内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致。实时内容还请关注 Github 项目托管页面:https://github.com/GenialX/hestia-serve树莓派,一个五脏俱全,集几乎所有功能于一身的微型计算器。大约一两月之前,屈屈 300 百大洋收入囊中。入手之后,出于对自动化的兴趣,慢慢地研究如何实现室内家电的智能自动化控制。在断断续续地,不断地摸索之后,有了若干想实现的点子,迄今为止也有所实践。点子利用红外线传感器智能控制空调、电视等基于红外遥控的家电设备;智能控制家中的灯泡设备(部分基于网络协议);方案硬件首先,除了树莓派之外,还需要如下硬件移动端设备 Android 手机一台(iPhone手机当然也没问题,但是本案例中只基于 Android 手机做了实现外网可直接访问的服务器一台(本案例使用阿里云服务器基于树莓派(点我购买)的传感器若干... Read More

利用内网穿透 frp 工具实现外网链接(ssh)内网树莓派设备

内网穿透原理内网穿透(Net 穿透)也即端口映射,笔者粗暴理解是一种能够将外网机器与内网机器(外网无法直接访问的设备)建立通信的一种技术解决方案。百度百科尽管有许多穿越 NAT 的技术,但没有一项是完美的,这是因为 NAT 的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器,而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的 IP 地址。一些方法仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数据 —— 这就引入了带宽开销的问题。具体原理详见百度百科=>https://baike.baidu.com/item/NAT%E7%A9%BF%E8%B6%8需要资源一台公网服务器(可以通过 IP 直接访问树莓派(也可以是电脑,以树莓派为例安装本文以 frp v 0.13.0 为例(具体版本可以自己定,但不保证其他版本能够成功)。笔者在 go ... Read More

ZigZag Conversion(math)

QuestioThe string"PAYPALISHIRING"is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibilityP A H A P L S I I Y I And then read line by line:"PAHNAPLSIIGYIR"Write the code that will take a string and make this conversion given a number of rowsstring convert(string text, int nRows);convert("PAYPALISH... Read More

PHP Internals Book 中文版 – Zvals – 基础结构

基础结构一个 zval(“Zend value”的缩写)代表一个任意类型的 PHP 变量。所以,它很可能是 PHP 中最重要的数据结构,同时你将会频繁地使用它。本章节讲述zvals的基础概念及其使用方法。类型和值每一个 zval 都会存储某个值和其对应的类型。这点非常重要,因为 PHP 是一门动态类型语言,所以变量的类型只有当运行时才会确定,并不是在编译时就能够确定。此外,zval 的类型在其生命周期是可以改变的,所以如果这个 zval 在最初存储了一个整形,那么在之后的某个时间点他也可能会存储了一个字符串。 类型是存储在一个整形的标签中(一个 unsigned char 类型的变量)。它有 8 中类型的值,分别对应着 PHP 中的 8 中变量类型。这些值可以用诸如 IS_TYPE 形式的常量来使用。比如:IS_NULL 对应 null 类型,IS_STRING 对应字符串类型。真实的值是存储在一个联合体中,如下所示... Read More

PHP Internals Book 中文版 – Zvals

Zval本章节的主题为用来表达 PHP 变量的 zval 数据结构。我们将会围绕 zvals 的概念和如何在扩展开发中使用两方面来进行阐述。目录基础结构类型和值访问宏赋值内存管理值语义和引用语义引用计数和写时复制分配并初始化 zval管理引用计数和 zval 销毁复制 zval分离 zval类型转换和操作符基础操作符比较类型转换 Read More