Java差分数组

package daweiguo.other;

import java.util.Arrays;

/**
 * @Author DaWeiGuo
 * @Date 2022/3/21 16:16
 * @Desc: 差分数组
 */
public class DifferenceArray {
    public static void main(String[] args) {
        int[] originalArray = new int[]{1,3,7,5,2};
        DifferenceArray differenceArray = new DifferenceArray(originalArray.length);
        differenceArray.add(2,4,5);
        differenceArray.add(1,3,2);
        differenceArray.add(0,2,-3);
        differenceArray.reflectToOriginalArray(originalArray);
        System.out.println(Arrays.toString(originalArray));
    }
    int[] differArray;
    public DifferenceArray(int len){
        differArray = new int[len];
        initDifferenceArray();
    }
    public boolean add(int l,int r,int value){
        if(l>= differArray.length) return false;
        differArray[l] += value;
        if(r+1<differArray.length)
        differArray[r+1] -= value;
        return true;
    }
    public void initDifferenceArray(){
        Arrays.fill(differArray,0);
    }
    public void resultArray(){
        for(int i=1;i<differArray.length;i++){
            differArray[i] +=differArray[i-1];
        }
    }
    public boolean reflectToOriginalArray(int[] originalArray){
        if(originalArray.length!=differArray.length) return false;
        resultArray();
        for(int i=0;i<originalArray.length;i++){
            originalArray[i] += differArray[i];
        }
        return true;
    }
}

posted @ 2022-03-21 16:51  DaWeiGuo  阅读(191)  评论(0编辑  收藏  举报