排序,可能是你这一辈子写得最多的算法。给它排个序、给排行榜排个名、把数据从小到大理一理——无处不在。但排序真正的价值,不是"把数字排整齐"这么简单,而是它教会我们"快"到底是怎么炼成的:同样是排序,笨办法 O(n²),聪明办法 O(n log n),数据一大,一个要等一天,一个一秒完事。这一课,我们从最笨的冒泡讲起,一路升级到快排,亲手摸一遍"快"的门道。一、先立个靶子:排序到底在解决什么排序 …
上一课我们用哈希表秒杀了"两数之和",享受了一把"查找 O(1)"的快感。但你可能没意识到:你写代码、读文件、处理用户输入、爬网页、调 API 时,碰到最多的数据类型,其实是字符串。字符串很"狡猾":它看起来最简单——不就是一串字符吗?但里面藏着的坑和门道一点不比哈希表少。面试里那些"最长回文子串""无重复字符的最长子串""字符串匹配",全是围绕它转的。这一课,我们把字符串这层窗户纸捅破:它到 …
从这一课开始,我们进入第二个阶段——系统编程入门。前面我们站在高处看操作系统,现在要蹲下来,摸一摸它最常用的"零件"。第一个要认识的,是贯穿整个 Unix/Linux 世界的一个哲学:一切皆文件。而连接你程序和这些"文件"的,是一张小小的号码牌——文件描述符。从"程序怎么读写文件"说起你现在写一个 C 程序,要往硬盘上写点东西。你会怎么写?int fd = open("hello.t …
本课属于 第一阶段 · 走进操作系统(第 1~5 课)。上一课我们认识了进程——那个"正在运行的程序"。但你有没有想过一个问题:一个浏览器,怎么做到一边渲染网页、一边下载图片、一边响应你的点击?它好像会"分身术"一样。这一课的主角,就是进程里的这些"分身"——线程。从"浏览器一边……一边……"说起你打开一个网页,盯着进度条看:图片在慢慢加载、文字已经先显示出来了、你还能随时滚动、点击链接。如果 …
第 2 课我们认识了四种线性数据结构,并且得出一条关键结论:数组"按下标读"是 O(1),但它"按值找"是 O(n)。想想这件事有多憋屈:你有一个存了 100 万个人名的列表,想知道"张三在不在里面",只能从头一个个比过去——最坏要翻 100 万次。难道就没有一种结构,既能"按名字直接定位",又不用事先排好顺序吗?有。它就是这一课的主角——哈希表(hash table)。它是工程界和面试里出现 …
上一课我们玩的是指针——两个指针一快一慢,就把链表的问题拆得干干净净。这一课我们往更底层钻一层:直接跟计算机的"母语"打交道,也就是位(bit)。你可能会嘀咕:我都用 Python 了,还要懂位运算干嘛?——好问题。但事实是,位运算在很多地方是绕不开的快车道:判断一个数是不是 2 的幂、在 O(1) 空间里找一个只出现一次的数、用一个整数优雅地表示"哪些开关被打开了"……这些题,不懂位运算,你 …
本课属于 第一阶段 · 走进操作系统(第 1~5 课)。前几课我们一直在聊"系统整体":怎么开机、怎么响应中断。这一课,镜头终于对准了操作系统真正的主角——进程。你双击一个图标、在命令行敲下一个命令,背后"活过来"的那个东西,就是它。从"双击图标"说起你现在做一件再普通不过的事:双击桌面上的浏览器图标。那一瞬间,磁盘上那个安静的 .exe(或 Linux 下的可执行文件),被"激活"了——操作 …
本课属于 第一阶段 · 走进操作系统(第 1~5 课)。上一课我们说,从按下电源键到 shell 提示符,是一场四棒接力。现在系统已经跑起来了,接下来要回答一个更本质的问题:一个"睡着"的操作系统,是怎么在你敲下键盘的那一刹那,瞬间"醒来"去干活的?答案,就藏在这一课的两个字里——中断。从"你敲了一下键盘"说起你现在敲一下键盘上的任意一个键。从你的手指落下,到屏幕上蹦出那个字符,中间发生了什么 …
上一课我们玩了一把生命游戏,用一个二维数组让格子"活"了过来。这一课,我们把镜头拉回到第 2 课学过的链表,学一个面试里出现频率极高的技巧——快慢指针(fast & slow pointers)。先记住:有些问题,用一个指针要跑两遍,用两个指针一快一慢,跑一遍就出答案。一、什么是快慢指针链表长得像一条单向的链子:head → 1 → 2 → 3 → 4 → 5 → None每个节点只有一条"出 …
上一课我们学了数组、链表、栈、队列,还动手写过一维数组。这一课,我们把数组铺成二维,玩一个震撼的小东西——康威生命游戏(Conway's Game of Life)。先看一个神奇的事实:下面这个"世界"里,没有任何一只生物是被我们手动画出来的。我们只写下了四条简单的规则,然后让时间一秒一秒往前走,整个世界的生死、移动、繁殖,全都自己"长"了出来。这正是这一课的主角——元胞自动机(cellula …
- « 前一页
- 1
- ...
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 后一页 »