美文网首页
370. Range Addition

370. Range Addition

作者: Jeanz | 来源:发表于2017-08-26 03:14 被阅读0次

    Assume you have an array of length n initialized with all 0's and are given k update operations.

    Each operation is represented as a triplet: [startIndex, endIndex, inc] which increments each element of subarray A[startIndex ... endIndex] (startIndex and endIndex inclusive) with inc.

    Return the modified array after all k operations were executed.

    Example:

    Given:
    
        length = 5,
        updates = [
            [1,  3,  2],
            [2,  4,  3],
            [0,  2, -2]
        ]
    
    Output:
    
        [-2, 0, 3, 5, 3]
    

    Explanation:

    Initial state:
    [ 0, 0, 0, 0, 0 ]
    
    After applying operation [1, 3, 2]:
    [ 0, 2, 2, 2, 0 ]
    
    After applying operation [2, 4, 3]:
    [ 0, 2, 5, 5, 3 ]
    
    After applying operation [0, 2, -2]:
    [-2, 0, 3, 5, 3 ]
    

    一刷
    题解:把update的value存在nums[left], -value存在nums[right+1], 然后从左到右累加。

    class Solution {
        public int[] getModifiedArray(int length, int[][] updates) {
            //length: the length of the array
            int[] nums = new int[length];
            for(int[] entry : updates){
                int left = entry[0], right = entry[1], value = entry[2];
                nums[left] += value;
                if(right<length-1) nums[right+1] = -value;
            }
            
            int res = 0;
            for(int i=0; i<length; i++){
                res += nums[i];
                nums[i] = res;
            }
            return nums;
        }
    }
    

    相关文章

      网友评论

          本文标题:370. Range Addition

          本文链接:https://www.haomeiwen.com/subject/gvfmdxtx.html