327 區間和的個數 (歸併排序)

2021-10-10 23:01:19 字數 1184 閱讀 6769

leetcode: 327. 區間和的個數

上篇是暴力字首和 >> 時間複雜度 o(n

2)o(n^2)

o(n2

)部落格指路: 327. 區間和的個數 (暴力字首和)

歸併排序解法 優化 >> 時間複雜度 o(n

logn

)o(nlogn)

o(nlog

n)思路:

分核心**

合 (區域性排序)

歸併排序

class

solution

int ans =

divde

(pre,

0, pre.length -

1, lower, upper)

;return ans;

}public

intdivde

(long

arr,

int left,

int right,

int lower,

int upper)

while

(j <= right && arr[j]

- arr[cnt]

<= upper)

ans += j - i;

cnt++;}

// 合

long

sorted =

newlong

[right - left +1]

;int a = left, b = mid +1;

int index =0;

while

(a < mid +

1|| b <= right)

else

if(b > right)

else

else}}

// 更新原陣列

for(

int k =

0; k < sorted.length; k++

)return ans;

}}

官方題解: 區間和的個數

LeetCode 327 區間和的個數 歸併排序

求區間和,一般先構建字首和陣列進行資料預處理,可以 o 1 得到任意區間和。查詢元素,一般先進行排序,利用單調性可以快速的縮減查詢範圍,減少時間複雜度。歸併排序包含了兩個過程 從上往下的分解 把當前區間一分為二,直至分解為若干個長度為1的子陣列 從下往上的合併 兩個有序的子區域兩兩向上合併。對於本題...

327 區間和的個數

今天的題目還是看了一陣子 我是鏈結 意思是任意子區間內所有元素的和要在lower和upper之間,可以取等 所以題目中 0,0 2,2 都指向各自位置的元素,0,2 就是從第0個元素 一直加到 第2 個元素 等於 2 所以這就是為什麼輸出是3.class solution sum nums i fo...

327 區間和的個數

給定乙個整數陣列 nums,返回區間和在 lower,upper 之間的個數,包含 lower 和 upper。區間和 s i,j 表示在 nums 中,位置從 i 到 j 的元素之和,包含 i 和 j i j 說明 最直觀的演算法複雜度是 o n2 請在此基礎上優化你的演算法。想到了字首和,同時由...