[Array] Container With Most Water

2021. 3. 29. 15:30프로그래밍-코딩테스트/LeetCode

두 x좌표 사이의 길이와 두 x좌표에 대한 height값 중 최소값을 곱한 값이 최대가 되는 값을 찾아라

전형적인 two-pointer문제다

포인터를 두 개 두고 Loop를 돌며, 각 Loop의 면적값을 구해 global answer와 비교하는 방식이다.

이 문제가 two-pointer인 이유는 간단하게 x좌표가 같거나 작을 수 없으므로 검사가 필요 없기 때문이다.

예컨데 i가3이라면 i보다 작거나 같은 j는 검사할 필요가 없다

 

다음과 같이 이중for문을 쓰면 timeout 에러가 날 것이다

 

이렇게 forward와 backward를 정해주고, global answer를 바꿔가며 설정해주면 된다.