2762. Continuous Subarrays

Difficulty:
Related Topics:
Similar Questions:

    Problem

    You are given a 0-indexed integer array nums. A subarray of nums is called continuous if:

    Return **the total number of *continuous* subarrays.**

    A subarray is a contiguous non-empty sequence of elements within an array.

    Example 1:

    Input: nums = [5,4,2,4]
    Output: 8
    Explanation:
    Continuous subarray of size 1: [5], [4], [2], [4].
    Continuous subarray of size 2: [5,4], [4,2], [2,4].
    Continuous subarray of size 3: [4,2,4].
    Thereare no subarrys of size 4.
    Total continuous subarrays = 4 + 3 + 1 = 8.
    It can be shown that there are no more continuous subarrays.
    

    Example 2:

    Input: nums = [1,2,3]
    Output: 6
    Explanation:
    Continuous subarray of size 1: [1], [2], [3].
    Continuous subarray of size 2: [1,2], [2,3].
    Continuous subarray of size 3: [1,2,3].
    Total continuous subarrays = 3 + 2 + 1 = 6.
    

    Constraints:

    Solution (Java)

    class Solution {
        public long continuousSubarrays(int[] nums) {
            long ans = 0;
            int n = nums.length;
            TreeMap<Integer, Integer> map = new TreeMap<>();
            int i=0,j=0;
            while(j <n)
            {
                map.put(nums[j], map.getOrDefault(nums[j], 0) + 1);
    
                while (map.size() > 1 && map.lastKey() - map.firstKey() > 2)
                {
                    map.put(nums[i], map.get(nums[i]) - 1);
                    if (map.get(nums[i]) == 0) {
                        map.remove(nums[i]);
                    }
                    i++;
                }
    
                ans += j - i + 1;
                j++;
            }
    
            return ans;
        }
    }
    

    Explain:

    nope.

    Complexity: