Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example
Since you are using lists, push_back
and pop_back
are O(1)
operations. Also, you end up generating a valid combination exactly once. Thus, the complexity is O(n choose k)
.
I don't think it is O(n^k). Because think about it. Let's assume n=100 and k=2. According to your complexity it will 100 to the power 2. But if it is n=100 and k=10, it will be 100 to the power of 10. But if you think about it, there are far more combinations with n=100,k=2 than n=100,k=10. The complexity is actually is the actual formula: which is n!/(k!(n-k)!). And the complexity therefore will be O(n!/k!(n-k)!).
The complexity is O(C(n,k))
which is O(n choose k)
.
This ends up being equivalent to O(min(n^k, n^(n-k)))
.
The time complexity is equal to the number of combinations there are.
In this case it is n choose k
.