华为软件类笔试-嵌入式软件开发 12-20
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
3、平面灯阵中寻找最大正方形边界
现在有个二维数组来模拟一个平面灯阵,平面灯阵中每个位置灯处于点亮或熄灭,分别对应数组常个元素取值只能为1或0,现在需要找一个正方形边界,其每条边上的灯都是点亮(对应数组中元素的值为1)的,且该正方形面积最大:
输入
第一行为灯阵的高度(二维数组的行数)
第二行为灯阵的宽度(二维数组的列数)
接著为模拟平台灯阵的二维数组arr
1<arr.length<=200
1<arr[0].length<=200
输出
返回满足条件的面积最大正方形边界信息。返回信息[r, c, w],其中r, c分别代表方阵右下角的行号和列号,w代表正方形的宽度。如果存在多个满足条件的正方形,则返回r最小的,若r相同,返回最小的正方形。
样例1
输入:
4
5
1 0 0 0 1
1 1 1 1 1
1 0 1 1 0
1 1 1 1 1
输出:
[3, 2, 3]
解释:满足条件且面积最大的正方形边界,其右下角的顶点为[3, 2],即行号为3,列号为2,其宽度为3,因此返回信息为[3, 2, 3].
样例2
输入
3
3
1 0 0
0 1 0
0 0 1
输出:
[0, 0, 1]
1、找磨损度最高和最低的硬盘
存储阵列上使用的一批固态硬盘,根据硬盘磨损值给定一个数组endurances,数组中每个元素表示单块硬盘的磨损度(0到10000之间)。
磨损度越大,表示此盘需要更换的概率越高。需要找出磨损度最高三块盘下标和磨损度最低的三块盘下标。
输入
一组硬盘磨损度的数组。
说明:
1)数组endurances中无重复值
2)数组的长度范围:[6, 200]
3)数组的下标从0开始。
输出
第一行:磨损度最高三块盘下标,按下标升序展示
第二行:磨损度最低的三块盘下标,按下标升序展示
样例1
样例1
输入:
1 50 40 68 72 86 35 14 87 99 63 75
输出:
5 8 9
0 6 7
样例2
输入
23 34 56 12 11 10
输出
0 1 2
3 4 5
#include <iostream> #include <vector> #include <algorithm> #include <sstream> using namespace std; void findDisks(const vector<int>& endurances) { vector<pair<int, int>> diskPairs; for (int i = 0; i < endurances.size(); ++i) { diskPairs.emplace_back(endurances[i], i); } sort(diskPairs.begin(), diskPairs.end()); vector<int> lowestIndexes, highestIndexes; for (int i = 0; i < 3; ++i) { lowestIndexes.push_back(diskPairs[i].second); } for (int i = 0; i < 3; ++i) { highestIndexes.push_back(diskPairs[endurances.size() - 1 - i].second); } sort(lowestIndexes.begin(), lowestIndexes.end()); sort(highestIndexes.begin(), highestIndexes.end()); for (int i = 0; i < 3; ++i) { if (i > 0) cout << " "; cout << highestIndexes[i]; } cout << endl; for (int i = 0; i < 3; ++i) { if (i > 0) cout << " "; cout << lowestIndexes[i]; } cout << endl; } int main() { string line; vector<int> endurances; getline(cin, li
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。