320x100
문제 : https://leetcode.com/problems/valid-mountain-array/
배열 A의 크기가 3미만인 것들은 정답이 될 수 없다. (값이 증가하는 범위와 감소하는 범위가 존재하려면 적어도 3개의 값이 필요하므로)
배열의 첫번째 값과 두번째 값을 비교했을 때 증가하지 않는다면 정답이 될 수 없다. (값이 증가하는 범위가 존재하지 않으므로)
위 두 경우를 먼저 체크한다.
이후 배열의 연속된 값 2개를 비교하면서 다음을 체크한다.
1. A[i-1] == A[i] : 값이 같은 경우 -> 정답이 될 수 없다.
2. A[i-1] < A[i] : 값이 증가하는 경우 -> 이전에 값이 감소하는 경우가 나온경우 정답이 될 수 없다.
3. A[i-1] > A[i] : 값이 감소하는 경우 -> 이후부터는 무조건 값이 감소하는 경우만 나와야 한다.
이를 배열에서 모두 탐색하고 난 뒤 무사히 통과한 경우(정답이 될 수 없는 경우가 나오지 않은 경우)가 정답이 될 수 있다.
시간복잡도는 O(N).
소스코드 : https://gist.github.com/fpdjsns/202c786483f921318102ce2c6e8fe8bf
320x100
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[leetcode][945] Minimum Increment to Make Array Unique (0) | 2018.11.27 |
---|---|
[leetcode][946] Validate Stack Sequences (0) | 2018.11.25 |
[leetcode][938] Range Sum of BST (0) | 2018.11.12 |
[leetcode][746] Min Cost Climbing Stairs (0) | 2018.11.11 |
[leetcode][129] Sum Root to Leaf Numbers (0) | 2018.11.10 |
댓글