<p>Let's call an array <code>arr</code> a <strong>mountain</strong> if the following properties hold:</p> <ul> <li><code>arr.length >= 3</code></li> <li>There exists some <code>i</code> with <code>0 < i < arr.length - 1</code> such that: <ul> <li><code>arr[0] < arr[1] < ... arr[i-1] < arr[i] </code></li> <li><code>arr[i] > arr[i+1] > ... > arr[arr.length - 1]</code></li> </ul> </li> </ul> <p>Given an integer array <code>arr</code> that is <strong>guaranteed</strong> to be a mountain, return any <code>i</code> such that <code>arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1]</code>.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> arr = [0,1,0] <strong>Output:</strong> 1 </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> arr = [0,2,1,0] <strong>Output:</strong> 1 </pre> <p><strong>Example 3:</strong></p> <pre> <strong>Input:</strong> arr = [0,10,5,2] <strong>Output:</strong> 1 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>3 <= arr.length <= 10<sup>4</sup></code></li> <li><code>0 <= arr[i] <= 10<sup>6</sup></code></li> <li><code>arr</code> is <strong>guaranteed</strong> to be a mountain array.</li> </ul> <p> </p> <strong>Follow up:</strong> Finding the <code>O(n)</code> is straightforward, could you find an <code>O(log(n))</code> solution?