Cho số lập trình viên n và mảng convention (1: đã có người, 0: trống). Không được hai lập trình viên ngồi cạnh nhau. Kiểm tra xem có thể cho tất cả n người vào không.
Ví dụ
Đầu vào: n = 2, convention = [0,0,1,0,0,0,1].
Đầu ra: True.
Thuật toán
- Duyệt qua từng vị trí
icủaconvention:- Xác định hàng xóm trái
avà phảib(xử lý biên). - Nếu
convention[i]==0và cả hai hàng xóm đều 0: đặtconvention[i]=1, giảmn.
- Xác định hàng xóm trái
- Trả về
n <= 0.
Mã nguồn Python
class Solution:
def solve(self, n, conv):
for i in range(len(conv)):
a = 0 if i-1 < 0 else i-1
b = len(conv)-1 if i+1 >= len(conv) else i+1
if conv[i]==0 and conv[a]==0 and conv[b]==0:
conv[i] = 1
n -= 1
return n <= 0
ob = Solution()
n = 2
convention = [0, 0, 1, 0, 0, 0, 1]
print(ob.solve(n, convention))
Đầu vào / Đầu ra
Input: 2, [0, 0, 1, 0, 0, 0, 1]
Output: True