比如有这样一段连续的数据:
[0-10],[10-20],[20-40],[40-50],[50-80],[80-100]
每次修改需要保持这一段数据的连续性。
如:[40-50]->[30-60]变成如下:
[0-10],[10-20],[20-30],[30-60],[60-80],[80-100]
[40,50]->[40.200]变化如下:
[0-10],[10-20],[20-40],[40-200]
[40-50]->[0,40]变化如下:
[0-40],[40-50],[50-80],[80-100]
以此类推。现在功能是实现了,但是各种配合 if else,感觉自己过两天就看不懂了。大概思路:找到当前需修改的点落在具体哪个范围,去修改这个范围的上下限值,多余的就删除。有没有啥更简单的方法啊,求个大佬解析解析。。
1
opengps 2020-08-20 17:26:09 +08:00
我前阵子刚做了一个时段选择问题跟你相似,你参考下:
1,按照每组数的第一个数,把集合排序 2,遍历,按顺序检查,是否存在重叠,是否存在遗漏 3,检查通过,直接覆盖掉原有设置(删除+新增,而不是修改) |
2
linvon 2020-08-20 17:38:24 +08:00
你这不就是相当于每次用一个新区间去覆盖旧区间列表吗,而且区间本来就保证有序了还省了一步操作。直接找区间起始终止点做更新就好了,量大就二分,也没啥复杂的
|
3
yyid 2020-08-21 11:12:36 +08:00
树状数组
|