Skip to content

Commit 0ec6f91

Browse files
committed
feat: add solutions to lc problem: No. 1838.Frequency of the Most Frequent Element
1 parent ec05ff9 commit 0ec6f91

File tree

5 files changed

+172
-2
lines changed

5 files changed

+172
-2
lines changed

solution/1800-1899/1838.Frequency of the Most Frequent Element/README.md

+60-1
Original file line numberDiff line numberDiff line change
@@ -55,22 +55,81 @@
5555

5656
<!-- 这里可写通用的实现逻辑 -->
5757

58+
排序后,用滑动窗口维护下标 `l``r` 的数都增加到 `nums[r]` 的操作次数。
59+
5860
<!-- tabs:start -->
5961

6062
### **Python3**
6163

6264
<!-- 这里可写当前语言的特殊实现逻辑 -->
6365

6466
```python
65-
67+
class Solution:
68+
def maxFrequency(self, nums: List[int], k: int) -> int:
69+
nums.sort()
70+
ans = 1
71+
window = 0
72+
l, r, n = 0, 1, len(nums)
73+
while r < n:
74+
window += (nums[r] - nums[r - 1]) * (r - l)
75+
r += 1
76+
while window > k:
77+
window -= nums[r - 1] - nums[l]
78+
l += 1
79+
ans = max(ans, r - l)
80+
return ans
6681
```
6782

6883
### **Java**
6984

7085
<!-- 这里可写当前语言的特殊实现逻辑 -->
7186

7287
```java
88+
class Solution {
89+
public int maxFrequency(int[] nums, int k) {
90+
Arrays.sort(nums);
91+
int ans = 1;
92+
int window = 0;
93+
int l = 0, r = 1, n = nums.length;
94+
while (r < n) {
95+
window += (nums[r] - nums[r - 1]) * (r++ - l);
96+
while (window > k) {
97+
window -= nums[r - 1] - nums[l];
98+
l++;
99+
}
100+
ans = Math.max(ans, r - l);
101+
}
102+
return ans;
103+
}
104+
}
105+
```
73106

107+
### **Go**
108+
109+
```go
110+
func maxFrequency(nums []int, k int) int {
111+
sort.Ints(nums)
112+
ans := 1
113+
window := 0
114+
l, r, n := 0, 1, len(nums)
115+
for r < n {
116+
window += (nums[r] - nums[r-1]) * (r - l)
117+
r++
118+
for window > k {
119+
window -= nums[r-1] - nums[l]
120+
l++
121+
}
122+
ans = max(ans, r-l)
123+
}
124+
return ans
125+
}
126+
127+
func max(x, y int) int {
128+
if x > y {
129+
return x
130+
}
131+
return y
132+
}
74133
```
75134

76135
### **...**

solution/1800-1899/1838.Frequency of the Most Frequent Element/README_EN.md

+58-1
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,70 @@ Explanation:</strong> Increment the first element three times and the second ele
5454
### **Python3**
5555

5656
```python
57-
57+
class Solution:
58+
def maxFrequency(self, nums: List[int], k: int) -> int:
59+
nums.sort()
60+
ans = 1
61+
window = 0
62+
l, r, n = 0, 1, len(nums)
63+
while r < n:
64+
window += (nums[r] - nums[r - 1]) * (r - l)
65+
r += 1
66+
while window > k:
67+
window -= nums[r - 1] - nums[l]
68+
l += 1
69+
ans = max(ans, r - l)
70+
return ans
5871
```
5972

6073
### **Java**
6174

6275
```java
76+
class Solution {
77+
public int maxFrequency(int[] nums, int k) {
78+
Arrays.sort(nums);
79+
int ans = 1;
80+
int window = 0;
81+
int l = 0, r = 1, n = nums.length;
82+
while (r < n) {
83+
window += (nums[r] - nums[r - 1]) * (r++ - l);
84+
while (window > k) {
85+
window -= nums[r - 1] - nums[l];
86+
l++;
87+
}
88+
ans = Math.max(ans, r - l);
89+
}
90+
return ans;
91+
}
92+
}
93+
```
6394

95+
### **Go**
96+
97+
```go
98+
func maxFrequency(nums []int, k int) int {
99+
sort.Ints(nums)
100+
ans := 1
101+
window := 0
102+
l, r, n := 0, 1, len(nums)
103+
for r < n {
104+
window += (nums[r] - nums[r-1]) * (r - l)
105+
r++
106+
for window > k {
107+
window -= nums[r-1] - nums[l]
108+
l++
109+
}
110+
ans = max(ans, r-l)
111+
}
112+
return ans
113+
}
114+
115+
func max(x, y int) int {
116+
if x > y {
117+
return x
118+
}
119+
return y
120+
}
64121
```
65122

66123
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
func maxFrequency(nums []int, k int) int {
2+
sort.Ints(nums)
3+
ans := 1
4+
window := 0
5+
l, r, n := 0, 1, len(nums)
6+
for r < n {
7+
window += (nums[r] - nums[r-1]) * (r - l)
8+
r++
9+
for window > k {
10+
window -= nums[r-1] - nums[l]
11+
l++
12+
}
13+
ans = max(ans, r-l)
14+
}
15+
return ans
16+
}
17+
18+
func max(x, y int) int {
19+
if x > y {
20+
return x
21+
}
22+
return y
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public int maxFrequency(int[] nums, int k) {
3+
Arrays.sort(nums);
4+
int ans = 1;
5+
int window = 0;
6+
int l = 0, r = 1, n = nums.length;
7+
while (r < n) {
8+
window += (nums[r] - nums[r - 1]) * (r++ - l);
9+
while (window > k) {
10+
window -= nums[r - 1] - nums[l];
11+
l++;
12+
}
13+
ans = Math.max(ans, r - l);
14+
}
15+
return ans;
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def maxFrequency(self, nums: List[int], k: int) -> int:
3+
nums.sort()
4+
ans = 1
5+
window = 0
6+
l, r, n = 0, 1, len(nums)
7+
while r < n:
8+
window += (nums[r] - nums[r - 1]) * (r - l)
9+
r += 1
10+
while window > k:
11+
window -= nums[r - 1] - nums[l]
12+
l += 1
13+
ans = max(ans, r - l)
14+
return ans

0 commit comments

Comments
 (0)