diff --git a/chapter_appendix/contribution.md b/chapter_appendix/contribution.md index d3779386e..dc2839011 100644 --- a/chapter_appendix/contribution.md +++ b/chapter_appendix/contribution.md @@ -36,7 +36,7 @@ comments: true ## 12.2.3.   Docker 部署 -你可以使用 Docker 来部署本项目。 +你可以使用 Docker 来部署本项目。稍等片刻,即可使用浏览器打开 `http://localhost:8000` 访问本项目。 ```shell git clone https://github.com/krahets/hello-algo.git @@ -44,8 +44,6 @@ cd hello-algo docker-compose up -d ``` -稍等片刻,即可使用浏览器打开 `http://localhost:8000` 访问本项目。 - 使用以下命令即可删除部署。 ```shell diff --git a/chapter_data_structure/data_and_memory.md b/chapter_data_structure/data_and_memory.md index 6fef7d01b..3fd0b3907 100644 --- a/chapter_data_structure/data_and_memory.md +++ b/chapter_data_structure/data_and_memory.md @@ -98,9 +98,9 @@ $$ | 指数位 E | 分数位 $\mathrm{N} = 0$ | 分数位 $\mathrm{N} \ne 0$ | 计算公式 | | ------------------ | ----------------------- | ---------------------------- | ------------------------------------------------------------ | -| $0$ | $\pm 0$ | 次正规数(subnormal number) | $(-1)^{\mathrm{S}} \times 2^{-126} \times (0.\mathrm{N})$ | -| $1, 2, \dots, 254$ | 正规数 | 正规数 | $(-1)^{\mathrm{S}} \times 2^{(\mathrm{E} -127)} \times (1.\mathrm{N})$ | -| $255$ | $\pm \infty$ | $\mathrm{NaN}$ | | +| $0$ | $\pm 0$ | 次正规数 | $(-1)^{\mathrm{S}} \times 2^{-126} \times (0.\mathrm{N})$ | +| $1, 2, \dots, 254$ | 正规数 | 正规数 | $(-1)^{\mathrm{S}} \times 2^{(\mathrm{E} -127)} \times (1.\mathrm{N})$ | +| $255$ | $\pm \infty$ | $\mathrm{NaN}$ | | 特别地,次正规数显著提升了小数精度: diff --git a/chapter_preface/about_the_book.md b/chapter_preface/about_the_book.md index a1acbd320..3720d3207 100644 --- a/chapter_preface/about_the_book.md +++ b/chapter_preface/about_the_book.md @@ -41,9 +41,9 @@ comments: true 本书的成书过程中,我获得了许多人的帮助,包括但不限于: - 感谢我的导师李博,在小酌畅谈时您告诉我“觉得应该做就去做”,坚定了我写这本书的决心。 -- 感谢我的女朋友泡泡担任本书的首位读者,从算法小白的视角为本书的写作提出了许多建议,使这本书更加适合算法初学者来阅读。 -- 感谢腾宝、琦宝、飞宝为本书起了个响当当的名字,好听又有梗,直接唤起我最初敲下第一行代码 "Hello World!" 的回忆。 -- 感谢苏潼为本书设计了封面和 LOGO ,我有些强迫症,前后多次修改,谢谢你的耐心。 +- 感谢我的女朋友泡泡担任本书的首位读者,从算法小白的视角提出了许多建议,使这本书更加适合初学者来阅读。 +- 感谢腾宝、琦宝、飞宝为本书起了个好听又有梗名字,直接唤起我最初敲下第一行代码 "Hello World!" 的回忆。 +- 感谢苏潼为本书设计了封面和 LOGO ,在我的强迫症下前后多次帮忙修改,谢谢你的耐心。 - 感谢 @squidfunk 给出的写作排版建议,以及优秀开源项目 [Material-for-MkDocs](https://github.com/squidfunk/mkdocs-material/tree/master) 。 本书鼓励“手脑并用”的学习方式,在这点上受到了《动手学深度学习》很大影响,也在此向各位同学强烈推荐这本著作,包括[中文版](https://github.com/d2l-ai/d2l-zh)、[英文版](https://github.com/d2l-ai/d2l-en)、[李沐老师 bilibili 主页](https://space.bilibili.com/1567748478)。 diff --git a/chapter_stack_and_queue/deque.md b/chapter_stack_and_queue/deque.md index b298e6553..66c7a0310 100644 --- a/chapter_stack_and_queue/deque.md +++ b/chapter_stack_and_queue/deque.md @@ -565,9 +565,81 @@ comments: true === "Go" ```go title="linkedlist_deque.go" - [class]{ListNode}-[func]{} + /* 基于双向链表实现的双向队列 */ + type linkedListDeque struct { + // 使用内置包 list + data *list.List + } - [class]{LinkedListDeque}-[func]{} + /* 初始化双端队列 */ + func newLinkedListDeque() *linkedListDeque { + return &linkedListDeque{ + data: list.New(), + } + } + + /* 队首元素入队 */ + func (s *linkedListDeque) pushFirst(value any) { + s.data.PushFront(value) + } + + /* 队尾元素入队 */ + func (s *linkedListDeque) pushLast(value any) { + s.data.PushBack(value) + } + + /* 队首元素出队 */ + func (s *linkedListDeque) pollFirst() any { + if s.isEmpty() { + return nil + } + e := s.data.Front() + s.data.Remove(e) + return e.Value + } + + /* 队尾元素出队 */ + func (s *linkedListDeque) pollLast() any { + if s.isEmpty() { + return nil + } + e := s.data.Back() + s.data.Remove(e) + return e.Value + } + + /* 访问队首元素 */ + func (s *linkedListDeque) peekFirst() any { + if s.isEmpty() { + return nil + } + e := s.data.Front() + return e.Value + } + + /* 访问队尾元素 */ + func (s *linkedListDeque) peekLast() any { + if s.isEmpty() { + return nil + } + e := s.data.Back() + return e.Value + } + + /* 获取队列的长度 */ + func (s *linkedListDeque) size() int { + return s.data.Len() + } + + /* 判断队列是否为空 */ + func (s *linkedListDeque) isEmpty() bool { + return s.data.Len() == 0 + } + + /* 获取 List 用于打印 */ + func (s *linkedListDeque) toList() *list.List { + return s.data + } ``` === "JavaScript"