从今天起至10月11日,持续连载。
关于计算机
ENIAC
出现于1946年。
是最早的计算机。
是电子管计算机。
其他
阶码,即浮点数的指数部分。
IPv6是128位的。
求补码:二进制下:各位取反再加1 或 把原码减1再取反。
关于算法
各种排序的时间复杂度
快速排序:$O(nlogn)$,最坏为$O(n^2)$。
冒泡排序:$O(n^2)$。
归并排序:$O(nlogn)$。
计数排序:$O(n)$。
插入排序:$O(n^2)$。
关于树
完全二叉树 vs 满二叉树:完全二叉树最后一层不一定满。
前序遍历:中左右;中序遍历:左中右;后序遍历:左右中。
节点数
继续阅读 »
PY有自己内建的工厂函数sorted用来排序, 它返回一个原地排序后的副本. 采用的是原地排序算法. 这个工厂函数的原型是:
{}sort(cmp=None, key=None, reverse=None) {}
继续阅读 »
基本问题
如何将单链表反转?
单链表结构定义
``` java
/** 单链表定义
*
* @author: crane-yuan
* @date: 2016-9-17 下午12:11:13
*/
public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) {
val = x;
}
}
```
more
算法实现
java
/** 单链表反转
*
* @param head
* @return ListNode
*/
public static ListNode rever
继续阅读 »
stl的容器库常用模式就是将容器、迭代器和算法的进行分离,容器专于存储,迭代器负责枚举,这样互相独立好处多多。
因此TBOX也借鉴了这种模式,不同的是没用模板,仅仅用了c语言来实现。容器库里面的大部分容器都是继承自迭代器的,所以迭代起来相当的方便。
下面先看个迭代器使用的例子:
继续阅读 »
本文主要记录下常用的IOS学习资源
more
网站列表
文章
英文
objc.io
iOS Goodies
NSHipster
Ray Wenderlich
Apple's Swift Blog
AppCoda
IOSDevWeekly
Medium
Ry's Cocoa Tutorial
NSScreencast
Use Your Loaf
OleBegemann
little bites of cocoa
Toptal
中文
objc.io
Cocoa China
Code4App
文档
Apple Developer
社区
Stackoverflow
源码
Github
算法
Codefights
视频
继续阅读 »
分析:如果把词典中的单词当作顶点,把doublet看作连接两个顶点的边,那么这个问题实际上是在一个无向图中搜索两个顶点间的最短路径,如果有的话。“最短路径”可能使人联想到复杂的Dijkstra或者更复杂的Floyd-Warshall算法,但在本题中,由于图的边没有权值,因此可以简单地使用以s为起点的广度优先搜索来找出到达点t的最短路径,如果有的话。
继续阅读 »
9月8日胖记
整个九月都比较忙碌,一直在做事情。没有时间停下来思考。
9月发生了很多事,搬了家,换到新的租处。不再窝在公司附近的一亩三分地。生活范围扩大了一点。每天骑车上下班,跟着爱车在路上飞驰,有一种不一样的感觉。
准备从研发工程师转型去算法工程师,不过路有很长,要慢慢学习,慢慢进步。希望有个好的结果。
继续阅读 »
如果在同一个git服务器上,你有多个账号(比如你有两个Github账号),就会面临多账号的SSH配置问题。
以下内容是基于MAC电脑,其他操作系统不在本文讨论范畴,但思路一致。
more
SSH
SSH全称Secure Shell,是一种建立在应用层和传输层的安全协议,具有用户认证和数据加密传输等优势。相比于ftp、pop、telnet等明文传送数据的协议,更加安全可靠。由于版权和加密算法等的限制,现在大部分使用的是开放源代码的OpenSSH。
继续阅读 »
新特性
自动检测所有系统libc接口,优先使用系统版本
支持自定义内存分配器,并且能够在debug模式下,获取每次分配的代码位置信息,用于自定义追踪
增加轻量级static_pool来维护整块buffer的内存分配,适合局部管理部分内存,pool虽然也能维护,但是底层基于large_pool,比较重量级,适合全局管理内存
增加stream快速读取全部数据到string的接口
增加adler32 hash算法
增加tb_memmem接口
采用pcre/pcre2/posix regex实现正则表达式库
改进
优化stream,支持对字符设备文件的读写
修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵
继续阅读 »
这是一个基础算法系列,主题是:为什么知道原理还是写不出正确的程序呢?
第一篇已经写好,叫做我尝试去写快排,结果。。。。文章结构都差不多:原理、联想、用法、框架、分步实现、完整代码及测试用例。
原理
插入排序的原理是:
- 将集合分为两个部分:已排好的部分和待排序的部分
- 每次从待排序部分抽一个元素跟已排好部分中的元素逐一比较,直到找到合适的位置,插入待排序元素
- 合适的位置可以是第一个比待排序元素小(大)的,也可能是已排好部分的下界
继续阅读 »