题解 | #填充数组#

填充数组

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

全部评论

相关推荐

Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务