題目描述:給出兩個整數 n 和 k,找出所有包含從 1 到 n 的數字,且恰好擁有 k 個逆序對的不同的陣列的個數。
逆序對的定義如下:對於陣列的第i個和第 j個元素,如果滿i < j且 a[i] > a[j],則其為乙個逆序對;否則不是。
由於答案可能很大,只需要返回 答案 mod 109 + 7 的值。
解題思路:思路詳解見解析
class
solution
:def
kinversepairs
(self, n:
int, k:
int)
->
int:
dp =[[
0]*(k+1)
for _ in
range
(n+1)]
for i in
range
(n+1):
dp[i][0
]=1for i in
range(1
, n+1)
:for j in
range(1
, k+1)
: dp[i]
[j]= dp[i-1]
[j]+ dp[i]
[j-1]-
(dp[i-1]
[j-i]
if j - i >=
0else0)
return dp[-1
][-1
]%int(
1e9+
7)
629 K個逆序對陣列
給出兩個整數 n 和 k,找出所有包含從 1 到 n 的數字,且恰好擁有 k 個逆序對的不同的陣列的個數。逆序對的定義如下 對於陣列的第i個和第 j個元素,如果滿i j且 a i a j 則其為乙個逆序對 否則不是。由於答案可能很大,只需要返回 答案 mod 109 7 的值。示例 1 輸入 n 3...
629 K個逆序對陣列
題目描述 給出兩個整數 n 和 k,找出所有包含從 1 到 n 的數字,且恰好擁有 k 個逆序對的不同的陣列的個數。逆序對的定義如下 對於陣列的第i個和第 j個元素,如果滿i j且 a i a j 則其為乙個逆序對 否則不是。由於答案可能很大,只需要返回 答案 mod 109 7 的值。示例 1 輸...
629 K個逆序對陣列
給出兩個整數 n 和 k,找出所有包含從 1 到 n 的數字,且恰好擁有 k 個逆序對的不同的陣列的個數。逆序對的定義如下 對於陣列的第i個和第 j個元素,如果滿i j且 a i a j 則其為乙個逆序對 否則不是。由於答案可能很大,只需要返回 答案 mod 109 7 的值。import j a....