Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0ec6f91

Browse files
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‎

Lines changed: 60 additions & 1 deletion
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‎

Lines changed: 58 additions & 1 deletion
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
### **...**
Lines changed: 23 additions & 0 deletions
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+
}
Lines changed: 17 additions & 0 deletions
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+
}
Lines changed: 14 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /