傳送門
思路:離散化權值樹狀陣列。
顯然因為可能存在負數,所以先離散化一波,然後從右到左遍歷,將詢問值儲存起來,然後更新即可。
#define lowbit(x) x&(-x)
class
solution
}int
query
(int x)
return ans;
} vector<
int>
countsmaller
(vector<
int>
& a)
;for
(int i=
1;i<=n;i++
) b[i]
=a[i-1]
;sort
(b+1
,b+1
+n);
int tot=
unique
(b+1
,b+n+1)
-b-1
;for
(int i=
1;i<=n;i++
) a[i-1]
=lower_bound
(b+1
,b+1
+n,a[i-1]
)-b;
vector<
int>ans;
for(
int i=n-
1;i>=
0;i--
)reverse
(ans.
begin()
,ans.
end())
;return ans;}}
;
315 計算右側小於當前元素的個數
給定乙個整數陣列 nums,按要求返回乙個新陣列 counts。陣列 counts 有該性質 counts i 的值是nums i 右側小於nums i 的元素的數量。示例 輸入 5,2,6,1 輸出 2,1,1,0 解釋 5 的右側有2個更小的元素 2 和 1 2 的右側僅有1個更小的元素 1 6...
315 計算右側小於當前元素的個數
給定乙個整數陣列 nums,按要求返回乙個新陣列 counts。陣列 counts 有該性質 counts i 的值是 nums i 右側小於 nums i 的元素的數量。示例 輸入 5,2,6,1 輸出 2,1,1,0 解釋 5 的右側有 2 個更小的元素 2 和 1 2 的右側僅有 1 個更小的...
315 計算右側小於當前元素的個數(困難題)
題目描述 給定乙個整數陣列 nums,按要求返回乙個新陣列 counts。陣列 counts 有該性質 counts i 的值是 nums i 右側小於 nums i 的元素的數量。示例 輸入 5,2,6,1 輸出 2,1,1,0 解釋 5 的右側有 2 個更小的元素 2 和 1 2 的右側僅有 1...