leetcode-157周赛-5216-统计元音字母序列的数目

题目描述:

 

 方法:倒推

class Solution(object):
    def countVowelPermutation(self, n):
        MOD = 10 ** 9 + 7
        a=e=i=o=u= 1
        
        for ZZZ in xrange(n-1):
            a2,e2,i2,o2,u2 = e+i+u,a+i,e+o,i,i+o
            a=a2
            e=e2
            i=i2
            o=o2
            u=u2
            a %= MOD
            e %= MOD
            i %= MOD
            o %= MOD
            u %= MOD
        return (a+e+i+o+u) % MOD

优化:

class Solution:
    def countVowelPermutation(self, n: int) -> int:
        a, e, i, o, u = 1, 1, 1, 1, 1
        MAX = 10 ** 9 + 7
        
        for k in range(1, n):
            a, e, i, o, u = (e + i + u) % MAX, (a + i) % MAX, (e + o) % MAX, i, (i + o) % MAX
        
        return (a + e + i + o + u) % MAX

 

posted @ 2019-10-07 11:13  oldby  阅读(260)  评论(0编辑  收藏  举报