力扣1800三步问题(dp迭代写法(省内存))

class Solution {
    
    
    public int waysToStep(int n) {
    
    
        if(n <= 2)
            return n;
        if(n == 3)
            return 4;
        int n1 = 1;
        int n2 = 2;
        int n3 = 4;
        int step = n % 3;int t = 0;
        n /= 3;
        for(int i = 1; i <= n;i++){
    
    
            n1 += (n2 + n3)%1000000007;
            n1 %= 1000000007;
            n2 += (n3 + n1)%1000000007;
            n2 %= 1000000007;
            t = n3;
            n3 += (n1 + n2)%1000000007;
            n3 %= 1000000007;
        }
        if(step == 0)
            return t;
        if(step == 1)
            return n1;
        if(step == 2)
            return n2;
    return 0;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_45311187/article/details/109781949
今日推荐