629 K個逆序對陣列

2021-10-11 06:04:38 字數 785 閱讀 4255

題目描述:給出兩個整數 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....