มีรายการ nums แทนความสูงบล็อกสี่เหลี่ยม ตรวจสอบว่ารูปทรงสมมาตรตาม y=x หรือไม่
เช่น nums=[7,5,3,2,2,1,1] ให้ True
ขั้นตอนการแก้ปัญหา
- Two pointers:
i=0, j=len(nums)-1 - ขณะ
i <= j:h = nums[j] - ขณะ
i < h: ตรวจสอบnums[i] == j+1ไม่ใช่คืน False i++, j--- จบลูปคืน True
ตัวอย่างโค้ด
class Solution:
def solve(self, nums):
i = 0; j = len(nums)-1
while i <= j:
h = nums[j]
while i < h:
if nums[i] != j+1: return False
i += 1
j -= 1
return True
ob = Solution()
nums = [7,5,3,2,2,1,1]
print(ob.solve(nums))
อินพุต
[7, 5, 3, 2, 2, 1, 1]
เอาต์พุต
True