से गुज़रना है, मुझे एक समस्या है जहां मुझे हल करने के लिए पूरी सूची के माध्यम से जाना चाहिए (कम से कम सुनिश्चित करें)। सवाल यह है कि सूची में लगातार संख्याओं की सबसे बड़ी संख्या को समझना है जो उस सूची में किसी अन्य (अधिक) तत्व को जोड़ता है। यदि कोई नहीं है तो हम उम्मीदवार के सारांश के रूप में सूची में सबसे बड़ा मूल्य लेते हैं और 1 तत्वों की लगातार सबसे बड़ी संख्या के रूप में।पाइथन कोड को तेज करना जो पूरी सूची
मेरा सामान्य कोड काम करता है, लेकिन बड़ी सूचियों (> 500,000 तत्व) के लिए बहुत अच्छा नहीं है। मैं केवल सुझावों की तलाश में हूं कि मैं इस समस्या से अलग कैसे हो सकता हूं। मेरे वर्तमान दृष्टिकोण:
L = [1,2,3,4,5,6,7,8,9,10]
candidate_sum = L[-1]
largest_count = 1
N = len(L)
i = 0
while i < N - 1:
s = L[i]
j = 0
while s <= (N - L[i + j + 1]):
j += 1
s += L[i+j]
if s in L and (j+1) > largest_count:
largest_count = j+1
candidate_sum = s
i+=1
इस मामले में, इस सवाल का जवाब होगा [1,2,3,4] के रूप में वे 10 को जोड़ने और लंबाई 4 है (जाहिर है इस उदाहरण एल एक बहुत ही सरल उदाहरण है) ।
मैं तो यह तेजी से प्रारंभिक बदलकर बनाया जबकि पाश हालत के लिए:
while i < (N-1)/largest_count
नहीं एक महान धारणा है, लेकिन मूल सोच है कि संख्या के वितरण को कुछ हद तक समान है, इसलिए की दूसरी छमाही पर दो नंबर सूची सूची में अंतिम संख्या की तुलना में औसत पर बड़ी है, और इसलिए अयोग्य हैं।
मैं बस के लिए देख रहा हूँ:
- संभव बाधाओं विभिन्न दृष्टिकोणों के रूप में
- सुझाव
आपको अपनी समस्या को और अधिक सटीक रूप से परिभाषित करने की आवश्यकता है।सूची हमेशा क्रमबद्ध और monotonic है? क्या उनमें कोई अंतर होगा? सटीक समस्या कथन के आधार पर सर्वश्रेष्ठ समाधान अलग-अलग होगा। –
@ ŁukaszRogalski सूची हमेशा क्रमबद्ध होती है, सभी तत्व अनूठे होते हैं इसलिए सूची सख्ती से बढ़ रही है और हां, लगातार संख्या – dimebucker91