오늘 매우 흥미로운 알고리즘 질문을 발견했습니다. 다음은 트위터 인터뷰 질문에서 파생된 알고리즘 설명입니다.
트위터 퍼들 알고리즘 설명
먼저 사진을 보세요
위 그림의 숫자는 배열의 내용을 기준으로 설명됩니다. 마지막으로 각 숫자의 크기를 기준으로 벽의 높이를 시뮬레이션하고, 마지막으로 벽이 생성되는 시점을 묻습니다. 비가 오면 이 벽을 설치할 수 있습니다. 물의 양은 1개 단위입니다.
물을 채운 벽의 모습은 다음과 같습니다
위 그림을 읽은 후 매우 흥미롭다고 생각합니다. 실제로 알고리즘 구현을 간략하게 분석해 보겠습니다.
사실 이 원칙은 비교적 간단합니다. 전체적으로 몇 가지 핵심 사항이 있습니다.
1. 가장 왼쪽과 가장 오른쪽에는 물이 채워져 있으면 안 됩니다
2. 물을 채우는 높이는 왼쪽과 오른쪽의 두 최대값 중 최소값에 따라 달라집니다
아래에서는 js를 사용하여 간단히 구현합니다.
요약
구현은 꽤 간단합니다. 사실, 생각만 하면 js로 많은 재미있는 것들을 얻을 수 있습니다.