से कम या उसके बराबर राशि के साथ सरणी में सभी ट्रिपलेट्स को हाल ही में एक साक्षात्कार में एक दोस्त से पूछा गया था और हम सरल ओ (एन) के अलावा किसी भी समाधान के बारे में नहीं जानते हैं।दिए गए योग
क्या कुछ बेहतर एल्गोरिदम है? मैं प्रदर्शन O (n के साथ इतने पर अन्य इस तरह की समस्याओं को देखा है लॉग:
प्रश्न एक पूर्णांक सरणी जिसका राशि से कम या दिए गए योग एस
नोट के बराबर है में सभी तीन को मिल रहा है n) लेकिन वे सभी इस समस्या के आसान संस्करण को हल कर रहे थे जैसे कि arr[i] + arr[j] + arr[k] = S
या जहां वे केवल यह जांच रहे थे कि ऐसा एक तिहाई मौजूद है या नहीं।
मेरा प्रश्न में arr[]
ऐसी है कि arr[i] + arr[j] + arr[k] <= S
हाँ, मुझे लगता है कि इस n2.log को छंटाई और छानने एक आप लंबाई n के बी सरणी होगा के बाद (एन) – user2250246
दृष्टिकोण, एक छोटे से सुधार किया जा सकता जटिलता कम हो जाएगा। फिर आपको सरणी 'बी [i]' के तत्वों पर पुन: प्रयास करना होगा और विंडोज़ 'बी [जे..के]' का पता लगाएं जो अगले सूत्र के साथ उपयुक्त है: ...
j = 1; if (B[i]+B[j] <= S) { k = binarySearch(B, B[j] + B[i]); loop over j..k and print. }
– user486075@ user486075 मैं अपना प्रयास कर रहा हूं अपने शब्द को समझने के लिए सबसे अच्छा है। क्या आपका मतलब है कि जब 'arr [i] + arr [j]> S' धारण करता है, तो हमें' k' के लिए बाइनरी-खोज करने की आवश्यकता नहीं होती है? –