मान लीजिए कि एक N x N ग्रिड है, हम कुछ 1 x 1 x 1 क्यूब रखते हैं जो x, y और z के साथ अक्ष-संरेखित हैं। यहां प्रत्येक मान v =ग्रिड [i] [j] ग्रिड सेल (i, j) के शीर्ष पर स्थित v क्यूब्स का एक टावर दिखा रहा है। हम इन घनों के प्रक्षेपण को xy, yz और zx तलों पर देखते हैं। यहां, हम ऊपर, सामने और साइड व्यू से क्यूब्स को देखते हुए प्रोजेक्शन देख रहे हैं। हमें तीनों अनुमानों का कुल क्षेत्रफल ज्ञात करना है।
तो, अगर इनपुट [[1,2],[3,4]]
. जैसा है
तो आउटपुट 17 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- xy :=0, yz :=0, xz :=0
- ग्रिड में प्रत्येक पंक्ति अनुक्रमणिका r और पंक्ति के लिए, करें
- yz :=yz + अधिकतम पंक्ति
- पंक्ति में प्रत्येक स्तंभ अनुक्रमणिका c और स्तंभ स्तंभ के लिए, करें
- यदि ग्रिड[r][c]> 0 शून्य नहीं है, तो
- xy :=xy + 1
- यदि ग्रिड[r][c]> 0 शून्य नहीं है, तो
- ग्रिड में प्रत्येक कॉल के लिए, करें
- xz :=xz + अधिकतम कॉलम
- xy + yz + xz लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def projectionArea(self, grid): xy = 0 yz = 0 xz = 0 for r, row in enumerate(grid): yz += max(row) for c, col in enumerate(row): if grid[r][c] > 0: xy += 1 for col in zip(*grid): xz += max(col) return xy + yz + xz ob = Solution() print(ob.projectionArea([[1,2],[3,4]]))
इनपुट
[[1,2],[3,4]]
आउटपुट
17