하나의 이진 목록이 있다고 가정합니다. 여기서 1은 푸시 작업을 나타내고 0은 스택 또는 큐에 대한 팝 작업을 나타냅니다. 가능한 작업 집합이 유효한지 여부를 확인해야 합니다.
따라서 입력이 nums =[1,0,1,1,0,1]과 같으면 시퀀스가 [Push,Pop,Push,Push,Pop,Push]이므로 출력은 True가 됩니다. 이러한 작업이 유효하도록 빈 목록에서 요소를 팝핑합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 푸시_카운트:=0
- 0부터 숫자 - 1까지의 범위에 있는 i에 대해
- nums[i]가 1이면
- push_count :=push_count + 1
- 그렇지 않으면
- push_count :=push_count - 1
- push_count <0이면
- 거짓을 반환
- nums[i]가 1이면
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): push_count = 0 for i in range (len(nums)): if nums[i]: push_count += 1 else: push_count -= 1 if push_count < 0: return False return True nums = [1,0,1,1,0,1] print(solve(nums))
입력
[1,0,1,1,0,1]
출력
True