华为软件类笔试-嵌入式软件开发 12-20

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《软件开发笔试汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

3、平面灯阵中寻找最大正方形边界

现在有个二维数组来模拟一个平面灯阵,平面灯阵中每个位置灯处于点亮或熄灭,分别对应数组常个元素取值只能为10,现在需要找一个正方形边界,其每条边上的灯都是点亮(对应数组中元素的值为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,数组中每个元素表示单块硬盘的磨损度(010000之间)

磨损度越大,表示此盘需要更换的概率越高。需要找出磨损度最高三块盘下标和磨损度最低的三块盘下标。

输入

一组硬盘磨损度的数组。

说明:

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, line);

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

4 18 评论
分享
牛客网
牛客企业服务