zoukankan      html  css  js  c++  java
  • 370. Range Addition


    June-17-2019

    第一反应是线段树。
    第二反应是我他妈是个傻逼吧,跟线段树有什么关系。
    比较直观的做法就是每个都扫一下,然后按部就班+-。
    另一个做法,update[i]代表从i开始往后都要+几,比如
    [1, 3 ,1]可以标记为update[1] = 1, update[4] = -1,代表1之后要+1,直到加到3为止,所以3后面要减去1,很巧妙。希望能从interval的题里找到相似的应用。

        public int[] getModifiedArray(int length, int[][] updates) {
            int[] changing = new int[length];
            
            for (int[] update : updates) {
                changing[update[0]] += update[2];
                if (update[1] < length - 1) changing[update[1] + 1] -= update[2];
            }
            
            int increment = 0;
            for (int i = 0; i < length; i ++) {
                increment += changing[i];
                changing[i] = increment;
            }
            
            return changing;
        }
    
  • 相关阅读:
    wx.Notebook
    wx.button
    wxpython wx.windows的API
    wxpython Menus and toolbars
    使用 profile 进行python代码性能分析
    html 表格边框的设置
    Java IO方式
    Java文件拷贝方式
    S.O.L.I.D原则
    面向对象设计
  • 原文地址:https://www.cnblogs.com/reboot329/p/5935754.html
Copyright © 2011-2022 走看看