Какова временная сложность рекурсивной функции с кешем? - PullRequest
0 голосов
/ 29 марта 2020

Ниже код моего решения проблема Leetcode . Это решение получило ограничение по времени, и я не могу рассчитать временную сложность рекурсивной функции с кешем. Как рассчитать временную сложность этого кода?

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];
    }
};
...