01墙基、前綴數(shù)組求和

1、前綴數(shù)組求和

1.1刷喜、案例

假設有一個數(shù)組arr残制,用戶總是非常頻繁的查詢arr中某一段的累加和,那么你應該如何組織數(shù)據(jù)掖疮,能讓這種查詢變得便利和快捷初茶?

1.2、方案1

使用二維數(shù)組的方式浊闪,分別將00的和放在二維數(shù)組的[0][0]位置恼布,將01的和放在二維數(shù)組的[0][1]...按此規(guī)則組合成一個二維數(shù)組

L\R 0 1 2 3
0 arr[0] arr[0]~arr[1]的和 arr[0]~arr[2]的和 arr[0]~arr[3]的和
1 無值 arr[1] arr[1]~arr[2]的和 arr[1]~arr[3]的和
2 無值 無值 arr[2] arr[2]~arr[3]的和
3 無值 無值 無值 arr[3]

1.3螺戳、方案2

使用前綴數(shù)組(前綴和)來存儲(一維數(shù)組),前綴數(shù)組的第0個位置放00的和折汞,第1個位置放01的和...第n-1個位置放0n-1的和倔幼。當需要求arr數(shù)組LR之間的和時,算法為L==0?h[R]:h[R]-h[L-1]字支。

1.4凤藏、代碼實現(xiàn)

    package com.yubin.algorithms;
    
    /**
     * 使用前綴數(shù)組求和
     *  案例:假設有一個數(shù)組arr,用戶總是非常頻繁的查詢arr中某一段的累加和你如何組織數(shù)據(jù)堕伪,能讓這種查詢變得便利和快捷揖庄?
     *
     *  方案1:
     *      使用二維數(shù)組的方式,分別將0~0的和放在二維數(shù)組的[0][0]位置, 0~1的和放在二維數(shù)組的[0][1]...按此規(guī)則組合二維數(shù)組
     *  方案2:
     *      使用前綴數(shù)組(前綴和)來存在(一維數(shù)組),前綴數(shù)組的第0個位置放0~0的和, 第1個位置放0~1的和 .. 第n-1個位置放0~n-1的和,
     *      當需要求arr數(shù)組L~R之間的和時,算法為 L==0? h[R] : h[R] - h[L-1]
     *
     *      假設arr數(shù)組的長度為N
     *       定義的二維數(shù)組是 h[N][N]
     *       定義的一維數(shù)組是 h[N]
     * @author YUBIN
     * @create 2021-03-13
     */
    public class Code0006_PreSum {
    
        public static void main(String[] args) {
            int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
            RangeSum1 rangeSum1 = new RangeSum1(arr);
            RangeSum2 rangeSum2 = new RangeSum2(arr);
            System.out.println(rangeSum1.rangeSum(3, 5));
            System.out.println(rangeSum2.rangeSum(3, 5));
        }
    
        // 原始遍歷L~R之間的元素求和的方式
        private static class RangeSum1 {
    
            private int[] arr;
    
            public RangeSum1(int[] array) {
                arr = array;
            }
    
            public int rangeSum(int L, int R) {
                int sum = 0;
                for (int i = L; i <= R; i++) {
                    sum += arr[i];
                }
                return sum;
            }
        }
    
        // 使用前綴數(shù)組
        private static class RangeSum2 {
    
            private int[] preSum;
    
            public RangeSum2(int[] array) {
                int N = array.length;
                preSum = new int[N];
                preSum[0] = array[0];
                for (int i = 1; i < N; i++) {
                    preSum[i] = preSum[i - 1] + array[i];
                }
            }
    
            public int rangeSum(int L, int R) {
                return L == 0 ? preSum[R] : preSum[R] - preSum[L - 1];
            }
    
        }
    }

1.5、兩種方案比較

第一種占用空間多欠雌,但是查詢的時候速度較第二種要快蹄梢。
如果查詢巨頻繁的話,第一種方案好富俄。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末禁炒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子霍比,更是在濱河造成了極大的恐慌幕袱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悠瞬,死亡現(xiàn)場離奇詭異们豌,居然都是意外死亡,警方通過查閱死者的電腦和手機浅妆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門望迎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凌外,你說我怎么就攤上這事辩尊。” “怎么了康辑?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵摄欲,是天一觀的道長。 經(jīng)常有香客問我疮薇,道長蒿涎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任惦辛,我火速辦了婚禮,結果婚禮上仓手,老公的妹妹穿的比我還像新娘胖齐。我一直安慰自己玻淑,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布呀伙。 她就那樣靜靜地躺著补履,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剿另。 梳的紋絲不亂的頭發(fā)上箫锤,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音雨女,去河邊找鬼谚攒。 笑死,一個胖子當著我的面吹牛氛堕,可吹牛的內容都是我干的馏臭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼讼稚,長吁一口氣:“原來是場噩夢啊……” “哼括儒!你這毒婦竟也來了?” 一聲冷哼從身側響起锐想,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤帮寻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赠摇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體固逗,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年蝉稳,在試婚紗的時候發(fā)現(xiàn)自己被綠了抒蚜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡耘戚,死狀恐怖嗡髓,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情收津,我是刑警寧澤饿这,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站撞秋,受9級特大地震影響长捧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜吻贿,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一串结、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦肌割、人聲如沸卧蜓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弥奸。三九已至,卻和暖如春奋早,著一層夾襖步出監(jiān)牢的瞬間盛霎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工耽装, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留愤炸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓剂邮,卻偏偏與公主長得像摇幻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挥萌,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容