Skip to content

3372. Longest Strictly Increasing Or Strictly Decreasing Subarray

Difficulty: Easy

LeetCode Problem View on GitHub


3372. Longest Strictly Increasing or Strictly Decreasing Subarray

Easy


You are given an array of integers nums. Return the length of the longest subarray of nums which is either strictly increasing or strictly decreasing.

 

Example 1:

Input: nums = [1,4,3,3,2]

Output: 2

Explanation:

The strictly increasing subarrays of nums are [1], [2], [3], [3], [4], and [1,4].

The strictly decreasing subarrays of nums are [1], [2], [3], [3], [4], [3,2], and [4,3].

Hence, we return 2.

Example 2:

Input: nums = [3,3,3,3]

Output: 1

Explanation:

The strictly increasing subarrays of nums are [3], [3], [3], and [3].

The strictly decreasing subarrays of nums are [3], [3], [3], and [3].

Hence, we return 1.

Example 3:

Input: nums = [3,2,1]

Output: 3

Explanation:

The strictly increasing subarrays of nums are [3], [2], and [1].

The strictly decreasing subarrays of nums are [3], [2], [1], [3,2], [2,1], and [3,2,1].

Hence, we return 3.

 

Constraints:

  • 1 <= nums.length <= 50
  • 1 <= nums[i] <= 50

Solution

class Solution {
    public int longestMonotonicSubarray(int[] nums) {
        return Math.max(si(nums) , sd(nums));
    }
    public static int si(int arr[]) {
        int n = arr.length;
        int count = 0, maxi = 0;
        for (int i = 0; i < n; i++) {
            count = 0;
            for (int j = i; j < n; j++) {
                if (j == i) count++;
                else {
                    if(arr[j] > arr[j - 1]) count++;
                    else break;
                }
                maxi = Math.max(maxi,  count);
            }
        }
        return maxi;
    }
    public static int sd(int arr[]) {
        int n = arr.length;
        int count = 0, maxi = 0;
        for (int i = 0; i < n; i++) {
            count = 0;
            for (int j = i; j < n; j++) {
                if (j == i) count++;
                else {
                    if(arr[j] < arr[j - 1]) count++;
                    else break;
                }
                maxi = Math.max(maxi, count);
            }
        }
        return maxi;
    }
}

Complexity Analysis

  • Time Complexity: O(?)
  • Space Complexity: O(?)

Approach

Detailed explanation of the approach will be added here