小米嵌入式软件工程师笔试 10-14
订阅专栏,方便查阅!!!
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《软件开发笔试汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
数组处理
时间限制:1000MS内存限制:65536KB
题目描述
刷掉一个元素以后全为1的最长子数组。
给定一个二进制数组 nums ,你需要从中删掉一个元素。
请你在删掉元素的结果数组中,返回最长的且只包合 1 的非空子数组的长度。
如果不存在这样的子数组,请返回 0。
输入描述
一个二进制数组
限制; 1length(二进制数组)<10^4
输出描述
删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。
样例输入
[1,1,0,1]
样例输出
3
提示
删掉位置 2 的数后,[1,1,1] 包含 3 个 1。
#include <iostream> #include <vector> #include <string> #include <sstream> using namespace std; vector<int> split(const string &s, char c) { stringstream ss(s); string item; vector<int> elems; while (getline(ss, item, c)) { elems.push_back(stoi(item)); } return elems; } int maxLengthAfterRemove(const vector<int>& nums) { int n = nums.size(); vector<pair<int, int>> segments; int start = -1; for (int i = 0; i < n; ++i) { if (nums[i] == 1) { if (start == -1) start = i; } else { if (start != -1) { segments.push_back({start, i - 1}); start = -1; } } } if (start != -1) { segments.push_back({start, n - 1}); } int maxLen = 0; for (int i = 0; i < segments.size(); ++i) { int len = segments[i].second - segments[i].first + 1; if (i < segments.size() - 1 && segments[i + 1].first - segments[i].second == 2)
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式软件笔试-24届真题汇总 文章被收录于专栏
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。