Cho danh sách nums đại diện chiều cao các cột khối vuông. Kiểm tra hình dạng có đối xứng qua đường y=x hay không.
Ví dụ: [7,5,3,2,2,1,1] → True.
Giải thuật
- Hai con trỏ
i=0(duyệt chiều cao),j=len(nums)-1(duyệt cột từ phải). - Lặp khi
i <= j:h = nums[j].- Trong khi
i < h: kiểm tranums[i] == j+1, tăngi. - Giảm
j.
- Trả về True nếu không vi phạm.
Ví dụ minh họa
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))
Đầu vào
[7, 5, 3, 2, 2, 1, 1]
Đầu ra
True