Ниже код моего решения проблема 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];
}
};