我有这么一个需求:要求记录用户扣量的记录,根据用户使用情况来扣量,用多少扣多少,没有特别的情况
建个表:shiyong
为了方便查看,这里我只拿一个用户a来举例
建个表:liwu
还有一个表,专门记赠送A的费用记录,但是赠送的记录有这么一条规则“只能在使用期限内有效”,如果超过了时间则无效
有效时间:5,表示5天
那么,这里就有这么几个情况:
a没有收到过赠送,这个好算:shiyong
.扣量
的总和
a收到过赠送,在有效期内刚好抵扣完,这个也好算:shiyong
.扣量
的总和-liwu
.收到
最难算的应该是下面这种情况了:
如果用户在13年-14年不间断的增加扣量
前半年没收到任何赠送
后半年不间断陆续收到赠送
有的有效期短,只有2天,有的有30天等不同有效期、不同抵扣量
有的赠送在有效期内全部使用完,有的赠送在有效期内只用了一部分
提问,上诉最后一种情况,该怎么处理呢?一条一条的遍历吗?
上面只举了一个用户一年的使用量,如果有N个用户,2、3年的记录,那效率不是相当低下?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
算法方面的话建议,将赠送表按时间建立线段树(有个隐患,当两个赠送时间有重叠的时候,拆分为3个赠送方便处理 ),再将使用量投入相应节点计算总和,最后遍历树就知道最终结果了。算法复杂度:O(n) = N*log(N) 大概这样吧。用存储过程效率好一点。