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 請在此基礎上優化你的演算法。想到了字首和,同時由...