我们可以从1开始枚举k
k=1,其实就是数组中元素值为1的个数
k=2,根据乘法原理可知,就是数组中元素值为1的个数×数组中元素值为2的个数
以此内推,因此使用一个哈希表统计数组中元素的个数,然后按照上述方式枚举k即可
给定一个长度为n的数组,求出这个数组有多少个子序列是一个k排列。k∈[1,n]
子序列:对数组删除若干个元素所得到的数组
k排列:一个长度为k的数组并且里面[1,k] 每个整数恰好出现一次,例如1,3,2,4 是一个4排列
第一行输入一个整数n(1≤n≤105)
第二行输入一个整数a(1≤ai≤109)
一行一个整数,表示有多少个子序列是一个k 排列 , k∈[1,n] 。
由于答案过大,请对109+7取模。
输入
5
1 2 1 3 4
输出
8
方案为:
$[1],[1],[1,2],[2,1],[1,2,3],[2,1,3],[1,2,3,4],[2,1,3,4]$