Untitled

 avatar
unknown
plain_text
a month ago
1.2 kB
1
Indexable
class Solution {
    public long maximumSubarraySum(int[] nums, int k) {
        // Edge case: if k is larger than array length, return 0
        if (k > nums.length) {
            return 0;
        }

        // Use a HashSet to track elements in current window
        Set<Integer> set = new HashSet<>();
        
        // Initialize first window of size k
        long currentSum = 0;
        int i = 0,j=0;
        while(j<k)
        {
            currentSum += nums[i];
            set.add(nums[i]);
            j++;
        }
        // Initialize maxSum
        long maxSum = (set.size() == k) ? currentSum : 0;

        // Slide the window
        while(j<n) {
            // Remove leftmost element from window
            set.remove(nums[i]);
            currentSum -= nums[i];

            // Add new element to window
            currentSum += nums[j];
            set.add(nums[j]);

            // Update maxSum if current window has all distinct elements
            if (set.size() == k) {
                maxSum = Math.max(maxSum, currentSum);
            }
        }

        return maxSum;
    }
}
Editor is loading...
Leave a Comment