LC 315 計算右側小於當前元素的個數

2021-10-08 00:07:14 字數 833 閱讀 1602

傳送門

思路:離散化權值樹狀陣列。

顯然因為可能存在負數,所以先離散化一波,然後從右到左遍歷,將詢問值儲存起來,然後更新即可。

#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...