ARST打卡第223周[223/521]
Algorithm
lc23_合并K个升序链表
思考: 感觉有点像大数据处理里面的多文件排序合并。 感觉一开始就把k个链表一起来排序,这样内存会占用很多,而且效率好像不高,因为内存访问比较乱,而且还要对比。(后面看题解,就是这样做,我还是太菜了,没有看出这种方法的可行性。。。) 感觉可能是固定先选一部分链表合并,之后再选一部分链表合并。
没想到考点,感觉盲写会超时或者超内存,看看题解怎么做的。
看题解发现暴力两两合并都没有超时,离谱…
然后优化就是分治的两两合并…
再优化就是用优先队列先存起来,然后再恢复成链表…
感觉完全不符合 hard 这个标签的定义,但凡标一个 medium …
算了,我的问题,想多了,学习一下吧
|
|
Review
【TED演讲】未来的互联网是什么样的
当前的网络世界是把所有的内容自由传播,然后通过广告赚取收益,但是这样创作者的版权收益很小, 很多网站平台偷走了创作者的收益!
所以 NFT 就是为了解决这个问题,通过智能合约,让信息在网络上传播的同时,每次信息交易都能让创作者获得收益。 这样就更好地激发了创作者的创作欲望,而不是让这个创作者再也不想创作了(参考《皮皮鲁外传》《鲁西西外传》《舒克贝塔历险记》作者郑渊洁)
当然道阻且长,且行且珍惜。
Tips
Share
git mv
移动文件,但是不丢失文件的 commit 信息。
经常在看项目代码时,看到有些代码仓库的某些文件的 commit 信息全是什么文件移动或者是代码结构整理… 这样就导致了原来文件修改的 commit 信息全部丢失,造成后续代码维护时需要消耗更多精力去理解其中的内容。
因此推荐使用 git mv
移动文件,从而保证移动文件,但是不丢失文件的 commit 信息。
同理,推荐添加子项目不丢失commit信息的submodule方法: NOTICE: 下面内容来自 ChatGPT3.5,博主暂时没全部尝试,不保证一定正确,仅提供一种思路。
在 Git 中,添加子项目并保留原有的提交(commit)信息可以通过使用 Git 的子模块(submodule)功能来实现。子模块允许你在一个 Git 仓库中引用另一个独立的 Git 仓库,并在父仓库中保留子仓库的提交历史和信息。
以下是将子项目添加为子模块的步骤:
-
首先,进入你的主项目的根目录,确保你已经在主项目的 Git 仓库下。
-
添加子模块:使用以下命令将子项目添加为子模块,其中 URL 是子项目的 Git 仓库地址,path 是你希望子模块在主项目中的存放路径:
|
|
例如:
|
|
- 提交更改:添加子模块后,你会看到主项目中有一个新的文件(.gitmodules)记录了子模块的信息。将这些更改提交到主项目:
|
|
- 初始化和更新子模块:第一次添加子模块后,子模块本身是空的,需要初始化和更新才能获取子模块的内容:
|
|
这会初始化并递归更新所有的子模块。
现在,你的主项目中包含了子模块,并且可以在主项目和子项目之间保留各自的提交历史和信息。
如果你以后需要在子模块中进行修改,并希望这些修改反映在主项目中,可以在子模块中进行修改,然后在主项目中提交更改。同样,如果子模块的远程仓库有新的提交,你可以在主项目中使用以下命令来更新子模块:
|
|
这会将子模块更新到其远程仓库的最新版本。