Find the Derangement of An Array

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class Solution:
    def findDerangement(self, n: int) -> int:
        MOD = 10**9 + 7
        derangements = [0] * (n + 1)
        derangements[0], derangements[1] = 1, 0

        for i in range(2, n + 1):
            derangements[i] = ((i - 1) * (derangements[i - 1] + derangements[i - 2])) % MOD

        return derangements[n]