斐波那契数列log(n)时间复杂度解决方案---LeetCode70题代码

代码思路百度一大把,我主要是自己撸了遍,通过过了LeetCode测试。截图如下:

斐波那契数列log(n)时间复杂度解决方案---LeetCode70题代码_第1张图片

vector > operator * (const vector >& a, const vector >& b) //矩阵乘法操作符重载
{
    
    int m = a.size(), n = a[0].size();
    int n2 = b.size(), l = b[0].size();
    if(n != n2)
    {
        vector > ans;
        return ans ;
    }
    vector > res(m,vector(l,0));
    int i = 0, j = 0, k = 0;
    for (i = 0; i < m; ++i)
    {
       for(j = 0; j  > G(2,vector(2,1));
       G[0][0] = 0;

       if(n ==1)
       {
           return a;
       }
       if (n == 2)
       {
          return b;
       }
       
       
       vector > res = QuickPow(G,n-2); //注意此处n的变化
       b = res[1][0]*a + res[1][1] * b;
       return b;
    }

    vector > QuickPow(vector > &G, int n) //矩阵快速幂
    {
        if(n == 1 )
        {
            return G;
        }
        else
        {
            vector > res = QuickPow(G,n>>1);
            if(n&1)
            {
               
                return res * res * G;
            }
            else
            {
                return res* res;
            }
            
        }
        
    }
};

另外LeetCode有个bug:VSCode下安装个LeetCode插件,可以不花钱就白嫖所有题目,题目能不能全部提交进行测试我还不清楚,我试了 下后面要花钱某一道的题目,是可以提交的。白嫖成功证明如下(我穷没钱开LeetCode的会员):

斐波那契数列log(n)时间复杂度解决方案---LeetCode70题代码_第2张图片

 

你可能感兴趣的:(数据结构与算法)