一个简单的功能实现起来又臭又长。。。。大伙来帮我看看哈

2021-03-09 16:30:36 +08:00
 phpIsNumberOne

用一个数组记录文件写入情况(是一小段一小段写入的,而且是无序的);输入的参数是一次写入开始的位置和结束的位置,比如数组0 8 46 55 则表示 0-8 和 46-55 的位置写入了数据,9-45 还没有写入数据。

​ 又在 13-19 写入了数据,数组变为 0 19 46 55

​ 又在 21-25 写入了数据,数组变为0 19 21 25 46 55

​ 又在 20-28 写入了数据,数组变为0 28 46 55

这个想法应该很好理解,当一个文件写入完成后,数组应该只有两个值0 fileSize

我实现是进行分类讨论,估计还有个别情况没有考虑到,写得又长又臭。。。。

Golang 写的: demo

1209 次点击
所在节点    算法
4 条回复
xgfan
2021-03-09 16:48:49 +08:00
代码确实很乱。
先把记录数组排好序。就应该很好写了。
如果还想更好写,就把起止下标作为一个结构。
lostvincent
2021-03-09 17:08:26 +08:00
Insert Interval,比较常见到的东西了,LeetCode 有个原题比较接近:
https://leetcode.com/problems/insert-interval/

你可以看下讨论 or 自己做着玩
clf
2021-03-09 17:26:40 +08:00
可以参考 google guava 的 range 的实现。这个本质上就是一种区间。
phpIsNumberOne
2021-03-10 16:06:20 +08:00
@lostvincent 感谢兄弟,现在心情很舒畅
https://play.studygolang.com/p/ZIdAFw6iGa7

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX