All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0801_0900.s0845_longest_mountain_in_array.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0801_0900.s0845_longest_mountain_in_array;

// #Medium #Array #Dynamic_Programming #Two_Pointers #Enumeration
// #2022_03_24_Time_2_ms_(94.37%)_Space_51.9_MB_(54.85%)

/**
 * 845 - Longest Mountain in Array\.
 *
 * Medium
 *
 * You may recall that an array `arr` is a **mountain array** if and only if:
 *
 * *   `arr.length >= 3`
 * *   There exists some index `i` ( **0-indexed** ) with `0 < i < arr.length - 1` such that:
 *     *   `arr[0] < arr[1] < ... < arr[i - 1] < arr[i]`
 *     *   `arr[i] > arr[i + 1] > ... > arr[arr.length - 1]`
 *
 * Given an integer array `arr`, return _the length of the longest subarray, which is a mountain_. Return `0` if there is no mountain subarray.
 *
 * **Example 1:**
 *
 * **Input:** arr = [2,1,4,7,3,2,5]
 *
 * **Output:** 5
 *
 * **Explanation:** The largest mountain is [1,4,7,3,2] which has length 5.
 *
 * **Example 2:**
 *
 * **Input:** arr = [2,2,2]
 *
 * **Output:** 0
 *
 * **Explanation:** There is no mountain.
 *
 * **Constraints:**
 *
 * *   1 <= arr.length <= 104
 * *   0 <= arr[i] <= 104
 *
 * **Follow up:**
 *
 * *   Can you solve it using only one pass?
 * *   Can you solve it in `O(1)` space?
**/
public class Solution {
    public int longestMountain(int[] arr) {
        int s = 0;
        int i = 1;
        while (i < arr.length - 1) {
            if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) {
                int j = i;
                int tem = 1;
                while (j > 0 && arr[j] > arr[j - 1]) {
                    j--;
                    tem++;
                }
                j = i;
                while (j < arr.length - 1 && arr[j] > arr[j + 1]) {
                    j++;
                    tem++;
                }
                s = Math.max(s, tem);
                i = j;
            }
            i++;
        }
        return s;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy