युग्म
को देखते हुए दो पूर्णांकों n और कश्मीर, 1 से बाहर कश्मीर संख्या के सभी संभव संयोजनों लौट ... एन।
उदाहरण के लिए, यदि n = 4 और कश्मीर = 2, एक समाधान है:सभी संयोजनों को खोजने के लिए इस एल्गोरिदम की समय जटिलता क्या है?[ [2, 4], [3, 4], [2, 3], [1, 2], [1, 3], [1, 4], ]
निजी तौर पर मुझे लगता है कि,
समय जटिलता = O (n^ट), एन और कश्मीर हैं इनपुट।
सभी मदद के लिए धन्यवाद।
अंत में, समय जटिलता = ओ (सी (एन, के) * के) = ओ ((एन!/(के! * (एन - के)!)) * के), एन और के है इनपुट,
चूंकि, जब भी हम संयोजन प्राप्त करते हैं, हमें कॉपी सबलिस्ट सूची को एक_रेस्ट में कॉपी करने की आवश्यकता होती है, जो ओ (के), है सी (एन, के) * के।
सी ++
#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int> > combine(int n, int k) {
vector<vector<int>> list;
// Input validation.
if (n < k) return list;
int start = 1;
vector<int> subList;
helper(n, k, start, list, subList);
return list;
}
void helper(int n, int k, int start,
vector<vector<int>> &list, vector<int> &subList) {
// Base case.
if (subList.size() == k) {
vector<int> one_rest(subList);
list.push_back(one_rest);
return;
}
if (start > n) return;
for (int i = start; i <= n; i ++) {
// Have a try.
subList.push_back(i);
// Do recursion.
helper(n, k, i + 1, list, subList);
// Roll back.
subList.pop_back();
}
}
};
क्या आप ओ (एन चुनें के) जैसे संयोजन के संदर्भ में जटिलताओं को लिख सकते हैं, या आपको अंतिम समकक्ष प्रदान करना है। क्या आप मुझे इस पर संदर्भ देने के लिए इंगित कर सकते हैं। – archie
'एफ (एक्स) = ओ (जी (एक्स))' एफ (एक्स) 'और' जी (एक्स) 'के सीमित व्यवहार के बारे में एक कठोर बयान है। [यहां] देखें (https://en.wikipedia.org/wiki/Big_O_notation)। 'ओ (एन का चयन करें)' कहने में कुछ भी गलत नहीं है। हालांकि, आपकी स्थिति के आधार पर, आप एक अलग दिख रहे 'जी (एक्स)' चाहते हैं। उदाहरण के लिए, यदि आप कुछ अन्य घातीय जटिलता अलगो के साथ 'ओ (एन चुनें के)' एल्गोरिदम की तुलना करने की कोशिश कर रहे हैं, तो आप 'एन चुनने के' को प्रतिस्थापित करना चाहते हैं जो [स्टर्लिंग का अनुमान] [https: // en .wikipedia.org/wiki/Binomial_coefficient # Bounds_and_asymptotic_formulas)। – Pradhan