#leetcode #solution #problem #monotone #invoked #crescendo #926

monotone-crescendo

一个设计用于WebAssembly的库,实现了LeetCode #926的解决方案。注意:仅作为教育实验发布到crates.io。由于它的crate-type设置为"cdylib",因此如果您将其作为依赖项使用,它将无法正常工作。

5个稳定版本

1.0.4 2021年11月21日
1.0.0 2021年11月19日

459WebAssembly

MIT 许可证

17KB
166

单调递增

Rust实现的LeetCode问题#926,编译为WebAssembly并通过JavaScript调用

查看工作演示.

本地尝试

  1. 将此存储库克隆到您的计算机上。

  2. 通过运行cargo install wasm-gc安装wasm-gc。这被 build-demo.sh用于通过删除不必要的/未使用的垃圾文件来减小编译的wasm二进制文件的大小。尽管项目本身表示大多数情况下不应使用它,但它似乎仍然可以使得wasm文件最小。我尝试在编译器选项中使用--gc-sections标志,并且仍然可以使其更小。我没有在这个项目中使用wasm-bindgenwasm-pack,这两个都试图在编译时删除垃圾文件,所以我使用了来手动完成。

  3. 在存储库根目录中运行./build-demo.sh。这将在存储库根目录中创建一个名为demo的目录中的monotone_crescendo.wasm二进制文件和一个index.html文件。

  4. cddemo/并运行一个http服务器。例如,使用python的SimpleHTTPServer

    cd demo/
    python -m SimpleHTTPServer
    

    然后演示将在https://127.0.0.1:8000中可用。

存储库文档

通过rustdoc生成的详细文档可以在此处找到与演示一起

致谢

向Dr. Richard Apodaca及其博客depth-first.com表示极大的敬意,没有它,我可能无法理解如何在不直接深入研究类似wasm-bindgen的情况下从WebAssembly的线性内存中读取和写入。

Apodaca博士的这两篇博客对我非常有帮助

  1. 将Rust编译到WebAssembly:一个简单示例
  2. 从头开始学习Rust和WebAssembly:使用字符串的Hello World

还要感谢Radu Matei及其博客文章,它帮助我基于从Apodaca博士的博客中学到的概念。

前缀和解决方案LeetCode上的官方解决方案,我仅将其翻译成了Rust。

累积解决方案tarunbishtLeetCode上发布,我将其翻译成了Rust。

无运行时依赖