ARTS第一周(2019年9月23日~29日)
Algorithm
成绩表
编号 | 难度 | 题目 | 我的解答 | 执行用时 | 内存消耗 | 排名 |
---|---|---|---|---|---|---|
1 | 简单 | 两数之和 | 190930-4.cpp | 8 ms | 10 MB | 98.80% |
2 | 中等 | 两数相加 | 190930-2.cpp | 24 ms | 10.2 MB | 98.24% |
128 | 困难 | 最长连续序列 | 190930-2.cpp | 12 ms | 10.3 MB | 92.43% |
解答详情
链接: https://leetcode-cn.com/problems/add-two-numbers
题目: 两数相加
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储一位数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字0之外,这两个数都不会以0开头。
示例:
输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
原因: 342 + 465 = 807
解答:
|
|
Review
[CodeProject] HotPatching: (VERY) Deep Inside
本文展示了在Windows系统中,不退出程序的情况下,给运行中的程序打补丁的技术。分别展示了五种不同的实现方法,并进行了比较:
- 载入一个DLL,并在DLL中,对EXE中的函数打补丁。这是最安全的一种方法。
- 优点:最安全,最容易实现,在单个地址空间中完成打补丁的过程。
- 缺点:需要一个额外的DLL。
- 通过COM接口(服务)的方式,实现EXE更新。
- 优点:不需要额外的DLL。
- 缺点:程序运行在不同的地址空间,通过COM服务器的代理方式调用。
- 通过共享内存和代理函数,更新EXE。
- 优点:不需要额外的DLL。
- 缺点:程序运行在不同的地址空间,通过代理函数调用。
- 将更新的EXE直接载入当前地址空间。
- 优点:所有程序都运行在同一地址空间,且只需要单一EXE。
- 缺点:技巧性太强。
- 把所有功能放到DLL中实现。
- 优点:单个程序文件即可。
- 缺点:需要为应用程序提供自举(bootstrap)方案(诸如.bat文件或快捷方式等),以便用户启动该程序。
其代码存储在: https://github.com/WindowsNT/hotpatch
点评:
- 这篇文章技术比较硬核,需要深入了解操作系统如何装载程序到地址空间并运行;
- 而且对不同的运行方式(普通EXE、COM服务器、独立DLL等)都有涉及和介绍;
- 针对不同操作系统(如Linux),需要根据其他相应体系架构调整实现。
Tip
[SuperUser] How to expand * on Bash command line
我是在Linux命令行上误操作时,发现通配符被自动扩展出来,于是通过搜索,找到了该“隐藏”的功能键:
输入命令ls *
后,按键:<Ctrl>
+ x
+ *
,可以看到该目录下的文件列表,被扩展出来,可以继续进行编辑。
而在过去,我通常都需要手工对ls
命令的结果进行选择和拷贝。
Share
分享一篇CSDN上的技术文章:
这篇文章写得很认真,详细讲解了C语言指针的相关基础知识,包括清晰的示意图,很适合编程入门者把基本功打扎实。
目录