【华为笔试题汇总】2024-04-10-华为春招笔试题(第二套)-三语言题解(CPP/Python/Java)
🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员
✨ 本系列打算持续跟新华为近期的春秋招笔试题汇总~
💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导
👏 感谢大家的订阅➕ 和 喜欢💗
📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。
文章目录
- 🧷 01.K小姐的生日派对
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 🔗 02.LYA 的生日派对邀请函传递
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 📎 03.LYA 的生日蛋糕订购
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 写在最后
- 📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。
🧷 01.K小姐的生日派对
问题描述
K小姐即将迎来自己的生日,为了庆祝这一天,她邀请了许多朋友来参加生日派对。派对结束后,K小姐发现有一位朋友在派对上出现的次数超过了所有朋友总出现次数的一半。K小姐很想知道这位朋友是谁,你能帮助她找出这位神秘朋友吗?
输入格式
输入包含一行,为一个以逗号分隔的正整数列表,表示每位朋友的编号。编号范围为 1 1 1 到 100000 100000 100000,朋友总数不超过 1000 1000 1000。
输出格式
输出一个整数,表示出现次数超过总出现次数一半的朋友编号。如果不存在这样的朋友,则输出 0 0 0。
当朋友总数为偶数 n n n 时,超过总数一半意味着出现次数大于 n 2 \frac{n}{2} 2n;当朋友总数为奇数 n n n 时,超过总数一半意味着出现次数大于 n + 1 2 \frac{n+1}{2} 2n+1。
样例输入
1,2,3,2,2
样例输出
2
数据范围
- 1 ≤ 1 \leq 1≤ 朋友编号 ≤ 100000 \leq 100000 ≤100000
-
1
- Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] input = sc.nextLine().split(","); int[] cnt = new int[100001]; int total = 0; for (String x : input) { int num = Integer.parseInt(x); cnt[num]++; total++; } int half = total / 2; for (int i = 1; i if (cnt[i] half) { System.out.println(i); return; } } System.out.println(0); } }- Cpp
#include using namespace std; const int MAXN = 100001; int main() { int cnt[MAXN] = {0}; int total = 0; string input; getline(cin, input); int pos = 0; while (pos half) { cout public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), m = sc.nextInt(); int[][] grid = new int[n][m]; for (int i = 0; i > x >> y; unordered_set allowed; int dept; while (cin >> dept) { allowed.insert(dept); } vector vis(n, vector(m, false)); vis[x][y] = true; queue q; q.push({x, y}); int ans = 0; int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; while (!q.empty()) { auto [i, j] = q.front(); q.pop(); for (int k = 0; k = 0 && ni = 0 && nj > c) { cal.push_back(c); } vector dp(high + 1, 0); dp[0] = 1; for (int c : cal) { for (int i = c; i dp[i] += dp[i - c]; } } long long ans = 0; for (int i = low; i ans += dp[i]; } cout
- Cpp
- Java
