【发布时间】:2020-08-12 15:41:49
【问题描述】:
我试图使用主定理来计算这种递归的运行时复杂性。根据主定理,我对此有点迷茫。
T(n)=aT(n/b))+f(n)
我插入值
有多少递归(拆分)函数?
a = 1
相对子问题大小。输入减少了多少?
b = L 因为子问题是独立列表
在递归之外完成的工作的运行时间?
f(n) = n 例如可能没有列表只是整数
主定理的哪种情况适用于此?
/*
341. Flatten Nested List Iterator on leetcode
Given a nested list of integers, implement an iterator to flatten it.
Each element is either an integer, or a list -- whose elements may also be integers or other
lists.
Input: [[1,1],2,[1,1]]
Output: [1,1,2,1,1]
Explanation: By calling next repeatedly until hasNext returns false,
the order of elements returned by next should be: [1,1,2,1,1].
*/
void recurse(vector<NestedInteger>& nestedList){
for(int i = 0 ; i < nestedList.size(); i++){
if(nestedList[i].isInteger()){
res.push_back(nestedList[i].getInteger());
}else{
recurse(nestedList[i].getList());
}
}
}
【问题讨论】:
-
当你有
T(n) = T(n/x)时,这意味着这将运行logₓ(n)次。
标签: algorithm performance recursion time-complexity