File tree Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Original file line number Diff line number Diff line change 2059
2059
2833|[ Furthest Point From Origin] ( ./solutions/2833-furthest-point-from-origin.js ) |Easy|
2060
2060
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|
2061
2061
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|
2062
2063
2843|[ Count Symmetric Integers] ( ./solutions/2843-count-symmetric-integers.js ) |Easy|
2063
2064
2845|[ Count of Interesting Subarrays] ( ./solutions/2845-count-of-interesting-subarrays.js ) |Medium|
2064
2065
2846|[ Minimum Edge Weight Equilibrium Queries in a Tree] ( ./solutions/2846-minimum-edge-weight-equilibrium-queries-in-a-tree.js ) |Hard|
Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments