Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 8f96e32

Browse files
committed
Add solution #2841
1 parent 0000c47 commit 8f96e32

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,6 +2059,7 @@
20592059
2833|[Furthest Point From Origin](./solutions/2833-furthest-point-from-origin.js)|Easy|
20602060
2839|[Check if Strings Can be Made Equal With Operations I](./solutions/2839-check-if-strings-can-be-made-equal-with-operations-i.js)|Easy|
20612061
2840|[Check if Strings Can be Made Equal With Operations II](./solutions/2840-check-if-strings-can-be-made-equal-with-operations-ii.js)|Medium|
2062+
2841|[Maximum Sum of Almost Unique Subarray](./solutions/2841-maximum-sum-of-almost-unique-subarray.js)|Medium|
20622063
2843|[Count Symmetric Integers](./solutions/2843-count-symmetric-integers.js)|Easy|
20632064
2845|[Count of Interesting Subarrays](./solutions/2845-count-of-interesting-subarrays.js)|Medium|
20642065
2846|[Minimum Edge Weight Equilibrium Queries in a Tree](./solutions/2846-minimum-edge-weight-equilibrium-queries-in-a-tree.js)|Hard|
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* 2841. Maximum Sum of Almost Unique Subarray
3+
* https://leetcode.com/problems/maximum-sum-of-almost-unique-subarray/
4+
* Difficulty: Medium
5+
*
6+
* You are given an integer array nums and two positive integers m and k.
7+
*
8+
* Return the maximum sum out of all almost unique subarrays of length k of nums. If no such
9+
* subarray exists, return 0.
10+
*
11+
* A subarray of nums is almost unique if it contains at least m distinct elements.
12+
*
13+
* A subarray is a contiguous non-empty sequence of elements within an array.
14+
*/
15+
16+
/**
17+
* @param {number[]} nums
18+
* @param {number} m
19+
* @param {number} k
20+
* @return {number}
21+
*/
22+
var maxSum = function(nums, m, k) {
23+
const map = new Map();
24+
let subarraySum = 0;
25+
let result = 0;
26+
27+
for (let i = 0; i < k; i++) {
28+
map.set(nums[i], (map.get(nums[i]) || 0) + 1);
29+
subarraySum += nums[i];
30+
}
31+
32+
if (map.size >= m) {
33+
result = subarraySum;
34+
}
35+
36+
for (let i = k; i < nums.length; i++) {
37+
map.set(nums[i - k], map.get(nums[i - k]) - 1);
38+
if (map.get(nums[i - k]) === 0) {
39+
map.delete(nums[i - k]);
40+
}
41+
42+
map.set(nums[i], (map.get(nums[i]) || 0) + 1);
43+
subarraySum = subarraySum - nums[i - k] + nums[i];
44+
45+
if (map.size >= m) {
46+
result = Math.max(result, subarraySum);
47+
}
48+
}
49+
50+
return result;
51+
};

0 commit comments

Comments
 (0)