यह वास्तव में एक साक्षात्कार प्रश्न था। मैं निम्नलिखित का उपयोग कर जावा मुद्रित करने के लिए किया था:इन अनुक्रमों को संतुष्ट करते समय निम्न अनुक्रम को मुद्रित करने के लिए
9
9 8 9
9 8 7 8 9
9 8 7 6 7 8 9
. . .
. . .
साक्षात्कार के दौरान, मैं कोड की एक शर्मनाक टुकड़ा लिखा था, लेकिन यह भी काम किया - एक बाहरी पाश का उपयोग कर, दो भीतरी छोरों (decrementing दृश्य के लिए एक और एक वृद्धिशील अनुक्रम के लिए!) और चर के एक टन। चरों में से एक प्रत्येक पंक्ति की लंबाई थी।
साक्षात्कारकर्ता ने मुझसे पूछा कोशिश करते हैं और पंक्ति लंबाई चर बिना
सिर्फ एक बाहरी और एक आंतरिक पाश
का उपयोग कर इसे पुनः लिखने के लिए।
नोट: जवाब को देखने के बाद, मुझे लगता है कि साक्षात्कारकर्ता वास्तव में दूसरी शर्त मतलब नहीं था। वह शायद मुझे अपने कोड को सरल बनाना चाहता था और दूसरी बात सिर्फ उसके मुंह से बाहर हो गई। यहाँ
int rowCnt = 5;
for(int i = 1; i <= rowCnt; i++)
{
int val = 9;
int delta = -1;
int rowLen = i * 2 - 1;
for(int j = 1; j <= rowLen; j++)
{
System.out.print(val + " ");
val += delta;
if(j >= rowLen/2) delta = 1;
}
System.out.println();
}
, मैं सिर्फ एक भीतरी पाश उपयोग कर रहा हूँ:
तो, बाद में घर वापस, मैं इस पर पहुंचे। मैं यह निर्धारित करने के लिए delta
मान का उपयोग कर रहा हूं कि वृद्धि या कमी होती है या नहीं। प्रत्येक पंक्ति के लिए, मैं वर्तमान इंडेक्स की पंक्ति के मध्य बिंदु से तुलना करता हूं और डेल्टा बदलता हूं।
मैंने पहली शर्त को संतुष्ट किया - केवल एक आंतरिक लूप। लेकिन मैं पंक्ति लंबाई का उपयोग किए बिना ऐसा करने में सक्षम नहीं हूं।
पंक्ति लंबाई को जानने के बिना हम इसे कैसे प्रिंट कर सकते हैं?
कई उत्तरों स्वीकार्य थे, लेकिन मुझे एक चुनना पड़ा, और वह मेरे लिए समझने के लिए सबसे सरल था।
कोशिश 'StringBuilder':' reverse' और 'append', और एक एकल decrementing पूर्णांक ... –
तुम सिर्फ वास्तविक अभिव्यक्ति (बयान) स्थानापन्न नहीं कर सकता में 'rowLen' की जगह? – SparKot
ध्यान दें कि आप '9'' currentRow - 1' बार घटाते हैं। आप पंक्ति लंबाई की बजाय इसका उपयोग कर सकते हैं। दोनों संबंधित हैं, इसलिए यह एक मूर्खतापूर्ण आवश्यकता की तरह लगता है कि पंक्ति लंबाई का उपयोग न करें, लेकिन जो भी हो। – IVlad