2021-03-09:在一個數(shù)組中舔箭,一個數(shù)左邊比它小的數(shù)的總和罩缴,叫數(shù)的小和,所有數(shù)的小和累加起來层扶,叫數(shù)組小和箫章。求數(shù)組小和。例子: [1,3,4,2,5]镜会,1左邊比1小的數(shù):沒有檬寂,3左邊比3小的數(shù)...

2021-03-09:在一個數(shù)組中,一個數(shù)左邊比它小的數(shù)的總和戳表,叫數(shù)的小和桶至,所有數(shù)的小和累加起來,叫數(shù)組小和匾旭。求數(shù)組小和镣屹。例子: [1,3,4,2,5],1左邊比1小的數(shù):沒有价涝,3左邊比3小的數(shù):1女蜈,4左邊比4小的數(shù):1、3色瘩,2左邊比2小的數(shù):1伪窖,5左邊比5小的數(shù):1、3居兆、4覆山、 2,所以數(shù)組的小和為1+1+3+1+1+3+4+2=16 泥栖。

福哥答案2021-03-09:

1.歸并排序簇宽,從左往右勋篓,相等拷右。有代碼晦毙。
2.歸并排序模板生巡。有代碼。

代碼用golang編寫见妒,代碼如下:

package main

import "fmt"

func main() {
    if true {
        arr := []int{1, 3, 4, 2, 5}
        ret := smallSum1(arr)
        fmt.Println("1.從左往右,相等拷右:", ret)
    }
    if true {
        arr := []int{1, 3, 4, 2, 5}
        ret := smallSum2(arr)
        fmt.Println("2.歸并排序模板:", ret)
    }
}
func smallSum1(arr []int) int {
    arrLen := len(arr)
    if arrLen <= 1 {
        return 0
    }
    return process1(arr, 0, arrLen-1)
}
func process1(arr []int, L int, R int) int {
    curLen := R - L + 1
    if curLen <= 1 {
        return 0
    }

    //求中點(diǎn)
    M := L + (R-L)>>1
    return process1(arr, L, M) + process1(arr, M+1, R) + merge1(arr, L, M, R)

}
func merge1(arr []int, L int, M int, R int) int {

    //輔助數(shù)組
    help := make([]int, R-L+1)
    i := 0
    p1 := L
    p2 := M + 1
    //誰小拷貝誰
    ans := 0
    for p1 <= M && p2 <= R {
        if arr[p1] < arr[p2] {
            ans += (R - p2 + 1) * arr[p1]
            help[i] = arr[p1]
            p1++
        } else {
            help[i] = arr[p2]
            p2++
        }
        i++
    }

    for p1 <= M {
        help[i] = arr[p1]
        p1++
        i++
    }
    for p2 <= R {
        help[i] = arr[p2]
        p2++
        i++
    }

    //輔助數(shù)組拷貝到原數(shù)組
    copy(arr[L:R+1], help)
    return ans
}

func smallSum2(arr []int) int {
    arrLen := len(arr)
    if arrLen <= 1 {
        return 0
    }
    return process2(arr, 0, arrLen-1)
}
func process2(arr []int, L int, R int) int {
    curLen := R - L + 1
    if curLen <= 1 {
        return 0
    }

    //求中點(diǎn)
    M := L + (R-L)>>1
    return process2(arr, L, M) + process2(arr, M+1, R) + merge2(arr, L, M, R)

}
func merge2(arr []int, L int, M int, R int) int {
    //新增的代碼
    ans := 0
    windowR := M + 1
    for i := M; i >= L; i-- {
        for windowR >= M+1 && arr[i] < arr[windowR] {
            windowR--
        }
        ans += (R - windowR) * arr[i]
    }

    //輔助數(shù)組
    help := make([]int, R-L+1)
    i := 0
    p1 := L
    p2 := M + 1
    //誰小拷貝誰
    for p1 <= M && p2 <= R {
        if arr[p1] <= arr[p2] {
            help[i] = arr[p1]
            p1++
        } else {
            help[i] = arr[p2]
            p2++
        }
        i++
    }

    for p1 <= M {
        help[i] = arr[p1]
        p1++
        i++
    }
    for p2 <= R {
        help[i] = arr[p2]
        p2++
        i++
    }

    //輔助數(shù)組拷貝到原數(shù)組
    copy(arr[L:R+1], help)
    return ans
}

執(zhí)行結(jié)果如下:


在這里插入圖片描述

左神java代碼
評論

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甸陌,一起剝皮案震驚了整個濱河市须揣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钱豁,老刑警劉巖耻卡,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牲尺,居然都是意外死亡卵酪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門谤碳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溃卡,“玉大人,你說我怎么就攤上這事蜒简∪诚郏” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵搓茬,是天一觀的道長犹赖。 經(jīng)常有香客問我,道長卷仑,這世上最難降的妖魔是什么峻村? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮锡凝,結(jié)果婚禮上粘昨,老公的妹妹穿的比我還像新娘。我一直安慰自己私爷,他們只是感情好雾棺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衬浑,像睡著了一般捌浩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上工秩,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天尸饺,我揣著相機(jī)與錄音进统,去河邊找鬼。 笑死浪听,一個胖子當(dāng)著我的面吹牛螟碎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迹栓,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼掉分,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了克伊?” 一聲冷哼從身側(cè)響起酥郭,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愿吹,沒想到半個月后不从,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犁跪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年椿息,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坷衍。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡寝优,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惫叛,到底是詐尸還是另有隱情倡勇,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布嘉涌,位于F島的核電站妻熊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仑最。R本人自食惡果不足惜扔役,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望警医。 院中可真熱鬧亿胸,春花似錦、人聲如沸预皇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吟温。三九已至序仙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲁豪,已是汗流浹背潘悼。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工律秃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人治唤。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓棒动,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宾添。 傳聞我的和親對象是個殘疾皇子船惨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容