Skip to content

Commit 50f9ec1

Browse files
LetMeFly666Copilot
andauthored
update: 添加问题“3346.执行操作后元素的最高频率I”的代码和题解 (#1188)
* codes: huawei笔试 cpp 环境没配好 Signed-off-by: LetMeFly666 <[email protected]> * refactor: codes should in Codes Signed-off-by: LetMeFly666 <[email protected]> * feat: 毕设月报+京东笔试 Signed-off-by: LetMeFly666 <[email protected]> * feat: debug cpp on mac M-series using VsCode internal Signed-off-by: LetMeFly666 <[email protected]> * word: en+jp today * 3346: WA.cpp (#1179) * 3346: WA.cpp (#1179) - target不能只nums[i] * 3346: AC.cpp+py+go+java | CE.rust (#1179) cpp - AC,76.60%,38.28% py - AC,89.80%,80.81% go - AC,85.42%,48.84% java - AC,81.31%,4.99% * 3346: AC.rust (#1179) - AC,75.63%,42.86% * update: 添加问题“3346.执行操作后元素的最高频率I”的代码和题解 (#1188) Signed-off-by: LetMeFly666 <[email protected]> * Address review comments: fix duplicate text and typo (#1190) * Initial plan * Fix review comments: remove duplicate, fix comparison, fix spelling Co-authored-by: LetMeFly666 <[email protected]> * Revert C++ signed/unsigned comparison fix as requested Co-authored-by: LetMeFly666 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: LetMeFly666 <[email protected]> * docs: record (#1188) --------- Signed-off-by: LetMeFly666 <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent 7c9b56c commit 50f9ec1

File tree

37 files changed

+2049
-36
lines changed

37 files changed

+2049
-36
lines changed

.vscode/launch.json

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,13 @@
3333
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
3434
},
3535
{
36-
"name": "C/C++: clang++ 生成和调试活动文件",
37-
"type": "cppdbg",
36+
"name": "C/C++: clang++ debug",
37+
"type": "lldb",
3838
"request": "launch",
3939
"program": "${fileDirname}/${fileBasenameNoExtension}",
4040
"args": [],
41-
"stopAtEntry": false,
42-
"cwd": "${fileDirname}",
43-
"environment": [],
44-
"externalConsole": true,
45-
"MIMode": "lldb",
46-
"preLaunchTask": "C/C++: clang++ 生成活动文件"
41+
"cwd": "${workspaceFolder}",
42+
"preLaunchTask": "C/C++: clang++ build",
4743
}
4844
]
4945
}

.vscode/tasks.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
},
2828
{
2929
"type": "cppbuild",
30-
"label": "C/C++: clang++ 生成活动文件",
30+
"label": "C/C++: clang++ build",
3131
"command": "/usr/bin/clang++",
3232
"args": [
3333
"-fcolor-diagnostics",
@@ -43,11 +43,12 @@
4343
"problemMatcher": [
4444
"$gcc"
4545
],
46-
"group": "build",
47-
"detail": "调试器生成的任务。",
48-
// "condition": {
49-
// "os": "macos"
50-
// }
46+
"group": {
47+
"kind": "build",
48+
"isDefault": true
49+
},
50+
"detail": "调试器生成的任务。"
51+
5152
}
5253
],
5354
"version": "2.0.0"
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-10-21 18:51:21
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-10-30 22:53:20
6+
*/
7+
#if defined(_WIN32) || defined(__APPLE__)
8+
#include "_[1,2]toVector.h"
9+
#endif
10+
11+
class Solution {
12+
public:
13+
int maxFrequency(vector<int>& nums, int k, int numOperations) {
14+
sort(nums.begin(), nums.end());
15+
unordered_map<int, int> frequency;
16+
for (int t : nums) {
17+
frequency[t]++;
18+
}
19+
int ans = 0;
20+
for (int l = 0, r = 0, target = nums[0]; target <= nums.back(); target++) {
21+
while (target - nums[l] > k) {
22+
l++;
23+
}
24+
while (r < nums.size() && nums[r] - target <= k) {
25+
r++;
26+
}
27+
ans = max(ans, min(r - l, numOperations + frequency[target]));
28+
}
29+
return ans;
30+
}
31+
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-10-30 22:39:36
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-10-30 23:00:59
6+
*/
7+
package main
8+
9+
import "sort"
10+
11+
func maxFrequency(nums []int, k int, numOperations int) (ans int) {
12+
sort.Ints(nums)
13+
frequency := map[int]int{}
14+
for _, t := range nums {
15+
frequency[t]++
16+
}
17+
n := len(nums)
18+
for l, r, target := 0, 0, nums[0]; target <= nums[n - 1]; target++ {
19+
for target - nums[l] > k {
20+
l++
21+
}
22+
for r < n && nums[r] - target <= k {
23+
r++
24+
}
25+
ans = max(ans, min(r - l, numOperations + frequency[target]))
26+
}
27+
return
28+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-10-30 22:39:36
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-10-30 23:07:34
6+
*/
7+
import java.util.Map;
8+
import java.util.HashMap;
9+
import java.util.Arrays;
10+
11+
class Solution {
12+
public int maxFrequency(int[] nums, int k, int numOperations) {
13+
Arrays.sort(nums);
14+
Map<Integer, Integer> frequency = new HashMap<>();
15+
for (int t : nums) {
16+
frequency.merge(t, 1, Integer::sum); // 这个api挺容易忘的
17+
}
18+
int ans = 0, n = nums.length;
19+
for (int l = 0, r = 0, target = nums[0]; target <= nums[n - 1]; target++) {
20+
while (target - nums[l] > k) {
21+
l++;
22+
}
23+
while (r < n && nums[r] - target <= k) {
24+
r++;
25+
}
26+
ans = Math.max(ans, Math.min(r - l, numOperations + frequency.getOrDefault(target, 0)));
27+
}
28+
return ans;
29+
}
30+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
'''
2+
Author: LetMeFly
3+
Date: 2025-10-30 22:39:36
4+
LastEditors: LetMeFly.xyz
5+
LastEditTime: 2025-10-30 22:57:07
6+
'''
7+
from typing import List
8+
from collections import Counter
9+
10+
class Solution:
11+
def maxFrequency(self, nums: List[int], k: int, numOperations: int) -> int:
12+
nums.sort()
13+
frequency = Counter(nums)
14+
l = r = 0
15+
ans = 0
16+
for target in range(nums[0], nums[-1] + 1):
17+
while target - nums[l] > k:
18+
l += 1
19+
while r < len(nums) and nums[r] - target <= k:
20+
r += 1
21+
ans = max(ans, min(r - l, numOperations + frequency[target]))
22+
return ans # 刚刚差点忘记return
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2025-10-30 22:39:36
4+
* @LastEditors: LetMeFly.xyz
5+
* @LastEditTime: 2025-10-30 23:19:32
6+
*/
7+
use std::collections::HashMap;
8+
// 这台机器上没有安装过rust,故无IDE语法检查了
9+
impl Solution {
10+
pub fn max_frequency(mut nums: Vec<i32>, k: i32, num_operations: i32) -> i32 {
11+
nums.sort();
12+
let mut frequency = HashMap::new();
13+
for &t in &nums {
14+
*frequency.entry(t).or_insert(0) += 1; // 不存在时默认值为0
15+
}
16+
17+
let mut ans: i32 = 0;
18+
let mut l: usize = 0;
19+
let mut r: usize = 0;
20+
for target in nums[0]..=nums[nums.len()-1] {
21+
while target - nums[l] > k {
22+
l += 1;
23+
}
24+
while r < nums.len() && nums[r] - target <= k {
25+
r += 1;
26+
}
27+
ans = ans.max(((r - l) as i32).min(num_operations + *frequency.get(&target).unwrap_or(&0)));
28+
}
29+
ans
30+
}
31+
}

Codes/3461-check-if-digits-are-equal-in-string-after-operations-i.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: LetMeFly
33
* @Date: 2025-10-23 23:05:13
44
* @LastEditors: LetMeFly.xyz
5-
* @LastEditTime: 2025-10-23 23:32:07
5+
* @LastEditTime: 2025-10-24 14:21:02
66
*/
77
package main
88

@@ -12,7 +12,7 @@ func hasSameDigits(s string) bool {
1212
a[i] = s[i] - '0'
1313
}
1414
for len(a) > 2 {
15-
b := make([]byte,len(a) - 1)
15+
b := make([]byte, len(a) - 1)
1616
for i := range b {
1717
b[i] = (a[i] + a[i + 1]) % 10
1818
}

Codes/huawei2025Autumn-01-AC.py

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
'''
2+
Author: LetMeFly
3+
Date: 2025-10-29 19:30:11
4+
LastEditors: LetMeFly.xyz
5+
LastEditTime: 2025-10-29 20:04:49
6+
'''
7+
"""
8+
6 10
9+
20 10 -1
10+
10 21 -1
11+
21 -1 11
12+
11 -1 22
13+
22 12 -1
14+
12 -1 -1
15+
"""
16+
from collections import defaultdict
17+
18+
class Node:
19+
def __init__(self, val: int):
20+
self.val = val
21+
self.left = None
22+
self.right = None
23+
self.isRoot = True
24+
25+
ma = defaultdict(Node)
26+
27+
def getNode(val: int) -> Node:
28+
if val == -1:
29+
return None
30+
if val in ma:
31+
return ma[val]
32+
ans = Node(val)
33+
ma[val] = ans
34+
return ans
35+
36+
# 其实这里返回Node也可以
37+
def getRoot() -> int:
38+
for val, node in ma.items():
39+
# print(val, node)
40+
if node.isRoot:
41+
return val
42+
43+
n, k = map(int, input().split())
44+
45+
for _ in range(n):
46+
root, l, r = map(getNode, map(int, input().split()))
47+
# print(root.val, l.val, r.val)
48+
root.left = l
49+
root.right = r
50+
if l:
51+
l.isRoot = False
52+
if r:
53+
r.isRoot = False
54+
55+
root = getRoot()
56+
# print(root)
57+
58+
ans = 0
59+
60+
"""
61+
status:
62+
0 无状态
63+
1 刚递增过
64+
2 刚递减过
65+
"""
66+
def dfs(root: Node, cnt: int, parent: Node, status: int):
67+
global ans
68+
ans = max(ans, cnt)
69+
if not root:
70+
return
71+
72+
nextStatus = 0
73+
if status == 1 and parent.val - root.val >= k:
74+
cnt += 1
75+
nextStatus = 2
76+
if status == 2 and root.val - parent.val >= k:
77+
cnt += 1
78+
nextStatus = 1
79+
if not nextStatus:
80+
cnt = 1
81+
if parent and parent.val - root.val >= k:
82+
cnt += 1
83+
nextStatus = 2
84+
if parent and root.val - parent.val >= k:
85+
cnt += 1
86+
nextStatus = 1
87+
dfs(root.left, cnt, root, nextStatus)
88+
dfs(root.right, cnt, root, nextStatus)
89+
90+
91+
dfs(ma[root], 0, None, 0)
92+
93+
print(ans)
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
'''
2+
Author: LetMeFly
3+
Date: 2025-10-29 20:05:25
4+
LastEditors: LetMeFly.xyz
5+
LastEditTime: 2025-10-29 20:59:46
6+
'''
7+
"""
8+
dp[i][j]:重量i价值j最少车数
9+
10+
11+
5
12+
80
13+
30 45 15 15 80
14+
400 470 200 200 870
15+
"""
16+
17+
n = int(input())
18+
k = int(input())
19+
weights = list(map(int, input().split()))
20+
values = list(map(int, input().split()))
21+
22+
dp = [[0] * (n * 1000) for _ in range(n)]
23+
maxVal = 0
24+
ans = []
25+
status = 1 << n
26+
for i in range(status):
27+
thisW = thisV = 0
28+
thisChoosen = []
29+
for j in range(n):
30+
if i & (1 << j):
31+
thisW += weights[j]
32+
thisV += values[j]
33+
thisChoosen.append(j)
34+
if thisW > k:
35+
break
36+
if thisW > k:
37+
break
38+
if thisW <= k:
39+
if thisV > maxVal or (thisV == maxVal and len(thisChoosen) < len(ans)):
40+
# if thisV > maxVal:
41+
ans = thisChoosen
42+
maxV = thisV
43+
44+
if not len(ans):
45+
print(-1)
46+
else:
47+
ans.sort()
48+
for i, v in enumerate(ans):
49+
# print(v, end=' ')
50+
if i:
51+
print(' ', end='')
52+
print(v, end='')
53+
54+
55+
# """
56+
# dfs(i)
57+
# """

0 commit comments

Comments
 (0)