小米嵌入式软件工程师笔试 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%内容,订阅专栏后可继续查看/也可单篇购买

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

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
牛客263158796号:我领羊一面后十天不挂也不推进 今天问hr说等前序的第一批意向发完看情况再看是否推进
点赞 评论 收藏
分享
2 8 评论
分享
牛客网
牛客企业服务