diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..ccd81dff --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,7 @@ +{ + "name": "TeX Live", + "image": "soulmachine/texlive:latest", + "extensions": [ + "James-Yu.latex-workshop" + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..72ac5ac3 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,31 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "lettcode-C++", + "type": "shell", + "command": "xelatex", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "leetcode-cpp.tex" + ], + "options": { + "cwd": "${workspaceFolder}/C++/" + } + }, + { + "label": "lettcode-Java", + "type": "shell", + "command": "xelatex", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "leetcode-java.tex" + ], + "options": { + "cwd": "${workspaceFolder}/Java/" + } + } + ] +} \ No newline at end of file diff --git a/C++/README.md b/C++/README.md index 3e67d41b..a856af82 100644 --- a/C++/README.md +++ b/C++/README.md @@ -1,5 +1,7 @@ -#C++版 ------------------ -**下载**:LeetCode题解(C++版).pdf +# C++版 -书的内容与Java版一摸一样,不过代码是用C++写的。本书的代码使用 C++ 11 标准。 +## 编译 + +```bash +docker run -it --rm -v $(pwd):/project -w /project soulmachine/texlive xelatex -interaction=nonstopmode leetcode-cpp.tex +```` diff --git a/C++/chapDFS.tex b/C++/chapDFS.tex index 2c9f0ab8..f6c4c107 100644 --- a/C++/chapDFS.tex +++ b/C++/chapDFS.tex @@ -1248,8 +1248,8 @@ \subsection{深搜与递归的区别} 递归有两种加速策略,一种是\textbf{剪枝(prunning)},对中间结果进行判断,提前返回;一种是\textbf{缓存},缓存中间结果,防止重复计算,用空间换时间。 -其实,递归+缓存,就是 memorization。所谓\textbf{memorization}(翻译为备忘录法,见第 \S \ref{sec:dp-vs-memorization}节),就是"top-down with cache"(自顶向下+缓存),它是Donald Michie 在1968年创造的术语,表示一种优化技术,在top-down 形式的程序中,使用缓存来避免重复计算,从而达到加速的目的。 +其实,递归+缓存,就是 memoization。所谓\textbf{memoization}(翻译为备忘录法,见第 \S \ref{sec:dp-vs-memoization}节),就是"top-down with cache"(自顶向下+缓存),它是Donald Michie 在1968年创造的术语,表示一种优化技术,在top-down 形式的程序中,使用缓存来避免重复计算,从而达到加速的目的。 -\textbf{memorization 不一定用递归},就像深搜不一定用递归一样,可以在迭代(iterative)中使用 memorization 。\textbf{递归也不一定用 memorization},可以用memorization来加速,但不是必须的。只有当递归使用了缓存,它才是 memorization 。 +\textbf{memoization 不一定用递归},就像深搜不一定用递归一样,可以在迭代(iterative)中使用 memoization 。\textbf{递归也不一定用 memoization},可以用memoization来加速,但不是必须的。只有当递归使用了缓存,它才是 memoization 。 既然递归一定是深搜,为什么很多书籍都同时使用这两个术语呢?在递归味道更浓的地方,一般用递归这个术语,在深搜更浓的场景下,用深搜这个术语,读者心里要弄清楚他俩大部分时候是一回事。在单链表、二叉树等递归数据结构上,递归的味道更浓,这时用递归这个术语;在图、隐式图等数据结构上,深搜的味道更浓,这时用深搜这个术语。 diff --git a/C++/chapDynamicProgramming.tex b/C++/chapDynamicProgramming.tex index 93a655d5..5327de51 100644 --- a/C++/chapDynamicProgramming.tex +++ b/C++/chapDynamicProgramming.tex @@ -514,7 +514,7 @@ \subsubsection{描述} \subsubsection{分析} -首先想到的是递归(即深搜),对两个string进行分割,然后比较四对字符串。代码虽然简单,但是复杂度比较高。有两种加速策略,一种是剪枝,提前返回;一种是加缓存,缓存中间结果,即memorization(翻译为记忆化搜索)。 +首先想到的是递归(即深搜),对两个string进行分割,然后比较四对字符串。代码虽然简单,但是复杂度比较高。有两种加速策略,一种是剪枝,提前返回;一种是加缓存,缓存中间结果,即memoization(翻译为记忆化搜索)。 剪枝可以五花八门,要充分观察,充分利用信息,找到能让节点提前返回的条件。例如,判断两个字符串是否互为scamble,至少要求每个字符在两个字符串中出现的次数要相等,如果不相等则返回false。 diff --git a/Java/README.md b/Java/README.md index 8886a0b4..73032b56 100644 --- a/Java/README.md +++ b/Java/README.md @@ -1,3 +1,7 @@ #Java版 ----------------- -书的内容与C++版一摸一样,不过代码是用Java写的。本书的代码要求 Java 6 以上。 + +## 编译 + + docker pull soulmachine/texlive + docker run -it --rm -v $(pwd):/data -w /data soulmachine/texlive-full xelatex -synctex=1 -interaction=nonstopmode leetcode-java.tex diff --git a/README.md b/README.md index 21fce47a..9af9ce21 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,41 @@ -#LeetCode题解 ------------------ -##PDF下载 -LeetCode题解(C++版).pdf - -C++ 文件夹下是C++版,内容一模一样,代码是用C++写的。 - -Java 文件夹下是Java版,目前正在编写中,由于拖延症,不知道猴年马月能完成。 - -##LaTeX模板 -本书使用的是陈硕开源的[模板](https://github.com/chenshuo/typeset)。这个模板制作精良,很有taste,感谢陈硕 :) +# LeetCode题解 -##在Windows下编译 -1. 安装Tex Live 2013 。把bin目录例如`D:\texlive\2013\bin\win32`加入PATH环境变量。 -1. 安装字体。这个LaTex模板总共使用了9个字体,下载地址 ,有的字体Windows自带了,有的字体Ubuntu自带了,但都不全,还是一次性安装完所有字体比较方便。 -1. 安装TeXstudio -1. (可选)启动Tex Live Manager,更新所有已安装的软件包。 -1. 配置TeXstudio。 +## 在线阅读 - 启动Texstudio,选择 `Options-->Configure Texstudio-->Commands`,XeLaTex 设置为 `xelatex -synctex=1 -interaction=nonstopmode %.tex`; + - 选择 `Options-->Configure Texstudio-->Build` +## PDF下载 - Build & View 由默认的 PDF Chain 改为 Compile & View; - - Default Compiler 由默认的PdfLaTex 修改为 XeLaTex ; - - PDF Viewer 改为 “Internal PDF Viewer(windowed)”,这样预览时会弹出一个独立的窗口,这样比较方便。 - -1. 编译。用TeXstudio打开`leetcode-cpp.tex`,点击界面上的绿色箭头就可以开始编译了。 - - 在下方的窗口可以看到TeXstudio正在使用的编译命令是`xelatex -synctex=1 -interaction=nonstopmode "leetcode-cpp".tex` +LeetCode题解(C++版).pdf -##在Ubuntu下编译 -1. 安装Tex Live 2013 - - 1.1. 下载TexLive 2013 的ISO 光盘,地址 +C++ 文件夹下是C++版,内容一模一样,代码是用C++写的。 - 1.2 mount 光盘,`sudo ./install-tl` 开始安装 +Java 文件夹下是Java版,目前正在编写中,由于拖延症,不知道猴年马月能完成。 - 1.3 加入环境变量 +## 如何编译PDF - sudo vi /etc/profile - export PATH=$PATH:/usr/local/texlive/2013/bin/x86_64-linux - export MANPATH=$MANPATH:/usr/local/texlive/2013/texmf-dist/doc/man - export INFPATH=$INFPATH:/usr/local/texlive/2013/texmf-dist/doc/info +### 命令行编译 -1. 安装字体。这个LaTex模板总共使用了9个字体,下载地址 ,有的字体Windows自带了,有的字体Ubuntu自带了,但都不全,还是一次性安装完所有字体比较方便。 -1. 安装TeXstudio -1. 配置TeXstudio。 +```bash +docker run -it --rm -v $(pwd)/C++:/project -w /project soulmachine/texlive xelatex -interaction=nonstopmode leetcode-cpp.tex +``` - 启动Texstudio,选择 `Options-->Configure Texstudio-->Commands`,XeLaTex 设置为 `xelatex -synctex=1 -interaction=nonstopmode %.tex`; +### vscode下编译 - 选择 `Options-->Configure Texstudio-->Build` +本项目已经配置好了vscode devcontainer, 可以在 Windows, Linux 和 macOS 三大平台上编译。 - Build & View 由默认的 PDF Chain 改为 Compile & View; +用 vscode 打开本项目,选择右下角弹出的 `"Reopen in Container"`,就会在容器中打开本项目,该容器安装了 Tex Live 2022 以及所需要的10个字体。 - Default Compiler 由默认的PdfLaTex 修改为 XeLaTex ; +点击vscode左下角的齿轮图标,选择 `Command Palette`,输入`tasks`, 选择 `Run Task`, 选择 `leetcode-C++`,即可启动编译。 - PDF Viewer 改为 “Internal PDF Viewer(windowed)”,这样预览时会弹出一个独立的窗口,这样比较方便。 +## LaTeX模板 -1. 编译。用TeXstudio打开`leetcode-cpp.tex`,点击界面上的绿色箭头就可以开始编译了。 +本书使用的是陈硕开源的[模板](https://github.com/chenshuo/typeset)。这个模板制作精良,感谢陈硕 :) - 在下方的窗口可以看到TeXstudio正在使用的编译命令是`xelatex -synctex=1 -interaction=nonstopmode "leetcode-cpp".tex` -1. 懒人版镜像。如果不想进行上面繁琐的安装过程,我做好了一个Ubuntu VMware虚拟机镜像,已经装好了TexLive 2013, TexStudio和字体(详细的安装日志见压缩包注释),开箱即用,下载地址 。 +这个LaTex模板总共使用了10个字体,下载地址 。有的字体Windows自带了,有的字体Ubuntu自带了,但都不全,还是一次性安装完所有字体比较方便。 -##如何贡献代码 -编译通过后,就具备了完整的LaTeX编译环境了。 +也可以参考 [Dockerfile](https://github.com/soulmachine/docker-images/blob/master/texlive/Dockerfile) 去学习如何安装所有字体。 -本书模板已经写好了,基本上不需要很多LaTeX知识就可以动手了。 +## 贡献代码 欢迎给本书添加内容或纠正错误,在自己本地编译成PDF,预览没问题后,就可以发pull request过来了。 - -##北美求职QQ群 - -237669375 - -## 【友情推荐】九章算法 - -1. 算法辅导在线视频直播课程: - - -## AlgoHub - - 是我建立的一个刷题网站,即将上线,敬请期待 - -## 纸质书 -**本书即将由电子工业出版社出版,敬请期待** - diff --git "a/\345\217\202\350\200\203\350\265\204\346\226\231/silicon-job.jpeg" "b/\345\217\202\350\200\203\350\265\204\346\226\231/silicon-job.jpeg" new file mode 100644 index 00000000..dd349c0b Binary files /dev/null and "b/\345\217\202\350\200\203\350\265\204\346\226\231/silicon-job.jpeg" differ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy