题解 | #填充数组#
填充数组
https://www.nowcoder.com/practice/3e34d9ed0bbc4db68b6fbca20a62926d
class Solution {
public:
#define A 1000000007
int FillArray(vector<int>& a, int k) {
long long ans=1;
int left,right;
a.push_back(k);
a.insert(a.begin(),1);
bool check=0;
for(int i=0;i<a.size();i++){
if(a[i]==0&&!check)
{left=i;
check=1;}
else if(a[i]!=0&&check){
right=i;
check=0;
ans*=cal(right-left,a[right]-a[left-1]+1);
ans%=(A);
}
}
return ans%(A);
}
long long cal(int n,int k){
cout<<n<<" "<<k<<endl;
vector<vector<long long>>a(n+1,vector<long long>(k+1,1));
for(int i=1;i<=k;i++)
a[1][i]=i;
for(int i=2;i<=n;i++){
for(int j=2;j<=k;j++){
a[i][j]=(a[i-1][j]+a[i][j-1])%A;
}
}
return a[n][k]%A;
}
};
时间复杂度:最坏情况:n+n*k
空间复杂度:n*k

顺丰集团工作强度 411人发布