题目地址:
https://leetcode.com/problems/count-sorted-vowel-strings/
给定一个正整数
n
n
n,问只由a, e, i, o, u
组成的长
n
n
n的字符串中满足字典序的一共有多少个(即不存在字典序的逆序)。
等价于从
5
5
5个数字
1
,
2
,
3
,
4
,
5
1,2,3,4,5
1,2,3,4,5里,可重复地挑
n
n
n个数,一共有多少个组合,即问不定方程
x
1
+
x
2
+
x
3
+
x
4
+
x
5
=
n
x_1+x_2+x_3+x_4+x_5=n
x1+x2+x3+x4+x5=n的非负整数解的个数(可将
x
1
x_1
x1看成是a
的个数),可以用隔板法,隔板有
4
4
4个,所以相当于问
n
+
4
n+4
n+4个位置里挑
4
4
4个位置的方案数,答案是
(
n
+
4
4
)
=
(
n
+
4
)
(
n
+
3
)
(
n
+
2
)
(
n
+
1
)
4
!
=
(
n
+
4
)
(
n
+
3
)
(
n
+
2
)
(
n
+
1
)
24
{{n+4}\choose {4}}=\frac{(n+4)(n+3)(n+2)(n+1)}{4!}=\frac{(n+4)(n+3)(n+2)(n+1)}{24}
(4n+4)=4!(n+4)(n+3)(n+2)(n+1)=24(n+4)(n+3)(n+2)(n+1)代码如下:
public class Solution {
public int countVowelStrings(int n) {
return (n + 1) * (n + 2) * (n + 3) * (n + 4) / 24;
}
}
时空复杂度 O ( 1 ) O(1) O(1)。