File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+
3
+ // Solution by Sergey Leschev
4
+ // 2968. Apply Operations to Maximize Frequency Score
5
+
6
+ func maxFrequencyScore( _ nums: [ Int ] , _ k: Int ) -> Int {
7
+ var sortedNums = nums. sorted ( )
8
+ let n = nums. count
9
+ var prefixSum = [ Int] ( repeating: 0 , count: n + 1 )
10
+
11
+ for i in 0 ..< n {
12
+ prefixSum [ i + 1 ] = prefixSum [ i] + sortedNums[ i]
13
+ }
14
+
15
+ var start = 0
16
+ var end = 1
17
+ var maxScore = 1
18
+
19
+ while end < n {
20
+ end += 1
21
+ let mid = ( start + end) / 2
22
+ let target = sortedNums [ mid]
23
+ var cost =
24
+ target * ( mid - start) - ( prefixSum [ mid] - prefixSum[ start] )
25
+ + ( prefixSum [ end] - prefixSum[ mid] - target * ( end - mid) )
26
+
27
+ while start < end && cost > k {
28
+ start += 1
29
+ let mid = ( start + end) / 2
30
+ let target = sortedNums [ mid]
31
+ cost =
32
+ target * ( mid - start) - ( prefixSum [ mid] - prefixSum[ start] )
33
+ + ( prefixSum [ end] - prefixSum[ mid] - target * ( end - mid) )
34
+ }
35
+
36
+ maxScore = max ( maxScore, end - start)
37
+ }
38
+
39
+ return maxScore
40
+ }
41
+ }
You can’t perform that action at this time.
0 commit comments