मेरे पास तीन अनंत जावा IntStream ऑब्जेक्ट हैं। मैं उन तीनों में मौजूद सबसे छोटा तत्व खोजना चाहता हूं।

    IntStream a = IntStream.iterate(286, i->i+1).map(i -> (Integer)i*(i+1)/2);
    IntStream b = IntStream.iterate(166, i->i+1).map(i -> (Integer)i*(3*i-1)/2);
    IntStream c = IntStream.iterate(144, i->i+1).map(i -> i*(2*i-1));

मैं हमेशा एक जानवर बल समाधान (धाराओं के बिना) नियोजित कर सकता हूं जिसमें नेस्टेड लूप में पुनरावृत्ति शामिल है, लेकिन मैं सोच रहा था कि क्या हम इसे धाराओं के साथ और अधिक कुशलता से कर सकते हैं?

-1
sank 16 अप्रैल 2018, 18:15

1 उत्तर

ये कार्य हमेशा बढ़ रहे हैं। तो जादू बराबर ट्रिपल मिलने पर कोड बंद हो जाना चाहिए।

कोड की बात है:

A) जब किसी स्ट्रीम का वर्तमान मान किसी अन्य से कम होता है, तो वह अपने लिए अगला पुनरावृति कर सकता है।

बी) जब यह समान उम्मीदवार मूल्य को पूरा करता है, तो यह निर्णय लेने के लिए तीसरी धारा की प्रतीक्षा करता है।

ग) जब अन्य सभी की तुलना में इसका मूल्य अधिक होता है, तो यह उम्मीदवार को बदल देता है और अन्य दोनों की प्रतीक्षा करता है।

संदर्भ बाजीगरी।

समाधान भी नहीं हो सकता है (कम से कम कम समय में)।

ध्यान दें कि स्ट्रीम c केवल सम संख्याएँ उत्पन्न कर सकता है (जब सम के साथ सीड किया जाता है)। ए और बी को तेजी से छोड़ने के लिए वहां कुछ अनुकूलन हो सकता है।

0
user2023577 16 अप्रैल 2018, 19:20