一个通用的优化的想法

一个通用的优化的想法

由于blocks中存储的元素都是整组中每个元素merge出来的属于一个组的特征值,那么我思考如果将这个值与传入的val进行merge如果结果仍然是val那么就可以直接更新?老师看看这个想法正确吗?

新增代码为:

if(merger.merge(blocks[b],val)==val){
            blocks[b]=val;
            return;
        }

update部分代码:

public void update(int index, E val){

        if(index < 0 || index >= N) return;

        int b = index / B;
        data[index] = val;
        
        if(merger.merge(blocks[b],val)==val){
            blocks[b]=val;
            return;
        }

        blocks[b] = data[b * B];
        for(int i = b * B + 1; i < Math.min((b + 1) * B, N); i ++)
            blocks[b] = merger.merge(blocks[b], data[i]);
    }


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

对区间和不成立。


比如 [-1, 1] 的区间和是 0, 现在要把 -1 位置的元素更新为 0,此时满足 -1 + 1 + 0 === 0,但是更新以后,[0, 1] 的和是 1。


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2636    人
  • 解答问题       1105    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师