Faaez Razeen

Longest Mountain in Array

  • 3 min read
  • LC-Medium
  • Two Pointers

3 years ago

Solution - O(n)

TimeSpaceExplanation
O()O()
function longestMountain(arr: number[]): number { const n = arr.length; let i = 0; let longest_mountain = 0; while (i < n) { let start = i; while ((i + 1) < n && arr[i + 1] > arr[i]) { i++; } if(i > start && (i + 1) < n && arr[i + 1] < arr[i]) { let j = i; while ((j + 1) < n && arr[j + 1] < arr[j]) { j++; } longest_mountain = Math.max(longest_mountain, j - start + 1); i = j; } else { i++; } } return longest_mountain; };

O(n^2) solution

function longestMountain(arr: number[]): number { let longest_mountain = 0; for(let i = 1; i < arr.length - 1; i++) { if (arr[i - 1] >= arr[i] || arr[i] <= arr[i + 1]) { continue; } let l = i; while ((l - 1) >= 0 && arr[l - 1] < arr[l]) { l--; } let r = i; while((r + 1) <= arr.length - 1 && arr[r + 1] < arr[r]) { r++; } longest_mountain = Math.max(longest_mountain, r - l + 1); } return longest_mountain; };