带缓存的递归函数的时间复杂度是多少?

时间:2020-03-29 04:15:24

标签: c++ algorithm time-complexity

下面的代码是我对leetcode problem的解决方案。 此解决方案的时间限制已超过,我无法计算带有缓存的递归函数的时间复杂度。您如何计算这段代码的时间复杂度?

public:
    vector<vector<int>> cache;
    int subarrayBitwiseORs(vector<int>& A) {
        set<int> nums;
        int size = A.size();
        cache.resize(size);
        for(int i = 0; i < size; i++) {
            cache[i].resize(size, -1);
            nums.insert(A[i]);
            cache[i][i] = A[i];
        }

        int tmp;
        for (int i = 0; i < size - 1; i++) {
            for (int j = i + 1; j < size; j++) {
                nums.insert(solution(i, j, A));
            }
        }

        return nums.size();
    }

    int solution(int i, int j, vector<int>& A) {
        if (cache[i][j] == -1)
            cache[i][j] = A[i] | solution(i + 1, j, A);

        return cache[i][j];
    }
};

0 个答案:

没有答案