科大讯飞嵌入式软件笔试编程题
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
《嵌入式软件笔试-2024年真题汇总》:https://blog.nowcoder.net/zhuanlan/04yYym
第一题:
牛牛拥有一个长度为 n 的01 串,现在他想知道,对于每个字符,在它前面的最近的不同字符的下标是多少?
输入描述
本题为多组测试数据,第一行输入一个正整数 T(1<=t<=100),代表测试数据组数。对于每组测试数据,第一行输入一个正整数 n(1<=n<=1000),代表初始 01串的长度。第二行输入一个长度为 n的01 串,代表初始字符串。
输出描述
对于每组测试数据,一行输出 n 个整数 a1,a2,...,an,其中 ai 代表初始字符串中第 i 个位置的字符前面,最近的不同字符的下标是 ai,特殊的,如果前面不存在不同字符,则输出 -1 表示不存在。
示例 1
输入
1 4 1101
输出
-1 -1 2 3
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
string s;
cin >> s;
int p0 = -1, p1 = -1;
vector<int> res(n, -1);
for (int i = 0; i < n; ++i) {
char c = s[i];
if (c == '0') {
res[i] = p1;
p0 = i + 1;
} else {
res[i] = p0;
p1 = i + 1;
}
}
for (int i = 0; i < n; ++i) {
if (i > 0) cout << " ";
cout << res[i];
}
cout << endl;
}
return 0;
}
第二题
给定n个数字A1,A2,..An,请求出这些数字中出现次数小于等于k的最小的数。
输入描述
第一行正整数n,k,接下来一行n个正整数,第i个表示Ai 1<=k<=n<=10^5,1<=Ai<=10^9
输出描述
一行一个整数,表示答案。如果不存在出现次数少于等于k次的数字,输出-1
示例 1
输入
5 2 1 1 1 2 3
输出
2
说明
1出现了三次,不合法;2,3均只出现了一次,其中2最小
示例 2
输入
8 2 1 1 4 5 7 1 3 3
输出
3
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
int solve(int n, int k, const vector<int>& nums) {
unordered_map<int, int> counter;
for (int num : nums) {
counter[num]++;
}
vector<int> sorted_keys;
for (const auto& pair : counter) {
sorted_keys.push_back(pair.first);
}
sort(sorted_keys.begin(), sorted_keys.end())
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布2025届嵌入式软件开发相关岗位笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

