สมมติว่ามีตาราง N x N เราวางลูกบาศก์ขนาด 1 x 1 x 1 อันที่จัดแนวแกนกับ x, y และ z ที่นี่แต่ละค่า v =grid[i][j] กำลังแสดงหอคอย v ลูกบาศก์ที่วางอยู่บนเซลล์กริด (i, j) เราดูการฉายภาพของลูกบาศก์เหล่านี้บนระนาบ xy, yz และ zx ที่นี่ เรากำลังดูการฉายภาพเมื่อมองลูกบาศก์จากด้านบน ด้านหน้า และด้านข้าง เราต้องหาพื้นที่ทั้งหมดของโครงทั้งสาม
ดังนั้นหากอินพุตเป็นแบบ [[1,2],[3,4]]
แล้วผลลัพธ์จะเป็น 17
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- xy :=0, yz :=0, xz :=0
- สำหรับดัชนีแต่ละแถว r และแถวในตาราง ทำ
- yz :=yz + สูงสุดของแถว
- สำหรับแต่ละดัชนีคอลัมน์ c และคอลัมน์คอลัมน์ในแถว ทำ
- ถ้า grid[r][c]> 0 ไม่ใช่ศูนย์ ดังนั้น
- xy :=xy + 1
- ถ้า grid[r][c]> 0 ไม่ใช่ศูนย์ ดังนั้น
- สำหรับแต่ละคอลัมน์ในกริด ให้ทำ
- xz :=xz + ค่า col สูงสุด
- คืนค่า 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