2016-12-04 9 views
6

में बढ़ते तत्वों की गणना करें मैं यादृच्छिक रूप से जेनरेट की गई सरणी, MOODS में लगातार बढ़ते तत्वों की सबसे लंबी स्ट्रिंग को गिनने की कोशिश कर रहा हूं। यह कोड हमेशा सही से कम एक देता है।एक सरणी

int maxDays = 0; 
    int days = 0; 
    for (int i = 0; i < MOODS.size() - 1; i++) { 
     if (MOODS.get(i + 1) > MOODS.get(i)) { 
      days += 1; 
     if(days>maxDays){ 
      maxDays=days; 
     } 
     } else { 
      days = 0; 
     } 

    } 
    return maxDays; 
} 
+2

मुझे लगता है कि आप इस तथ्य की अनदेखी है कि जब MOODS.get (i + 1)> MOODS.get (i) पहली बार के लिए, जब दिन = 0, तार की बढ़ती अनुक्रम दो की लंबाई है । इसे ठीक करें और इसे काम करना चाहिए। –

+0

ओह मैन, मैंने उस त्रुटि के खिलाफ अपने सिर को इतनी देर तक बिताया ... बहुत बहुत धन्यवाद। – olwatshisface

+0

आपका स्वागत है :)। उत्तर में कोड समस्या को हल करेगा और MOODS.size() = 0 के विशेष मामले को भी संभाल देगा। –

उत्तर

5

आपके पास हमेशा 1 की लंबाई के साथ स्ट्रिंग का कम से कम एक बढ़ता अनुक्रम होगा। बस दिन 1 में बदलें और यह काम करेगा।

int maxDays = Math.min(1, MOODS.size()); 
int days = 1; 
for (int i = 0; i < MOODS.size() - 1; i++) { 
    if (MOODS.get(i + 1) > MOODS.get(i)) { 
     days += 1; 
     if (days>maxDays){ 
      maxDays=days; 
     } 
    } else { 
     days = 1; 
    } 
} 
return maxDays; 
+1

एक और समस्या है। क्या होता है जब 'MOODS.size()' केवल '1' है? या '0'? – 4castle

+0

हां, यह लूप के लिए बिल्कुल प्रवेश नहीं करेगा। अधिकतम दिन को 1 पर सेट करना ठीक करेगा। –

+1

'int maxdays = Math.min (1, MOODS.size()); आकार को' 0' होने पर भी ठीक करना चाहिए। – 4castle