微软笔试8.26分享

欢迎互对答案~

// 第1题

int solution(string &S) {
    unordered_map<char, int> m;
    m[0] = -1;
    int n = S.size();
    int res = 0;
    int cur = 0;
    for (int i = 0; i < n; ++i) {
        cur ^= (1 << (S[i] - 'a'));
        if (m.count(cur)) res = max(res, i - m[cur]);
        else m[cur] = i;
    }
    return res;
}

// 第2题
int solution(vector<int> &A, int M) {
    // write your code in C++ (C++14 (g++ 6.2.0))
    unordered_map<int, int> m;
    int res = 0;
    for (const int &num : A) {
        int val = num >= 0 ? num : (num % M) + M;
        ++m[val % M];
        res = max(res, m[val % M]);
    }
    return res;
}

// 第三题
int solution(vector<int> &A, vector<int> &B) {
    // write your code in C++ (C++14 (g++ 6.2.0))
    unordered_set<int> s;
    int n = A.size();
    for (int i = 0; i < n; ++i) {
        if (A[i] == B[i]) s.emplace(A[i]);
    }
    for (int i = 0; i < n; ++i) {
        if (s.count(A[i]) || s.count(B[i])) continue;
        s.emplace(max(A[i], B[i]));
    }
    int res = 1;
    while (s.count(res)) {
        ++res;
    }
    return res;
}


#微软##微软笔试##笔试#
全部评论
感谢分享的笔试经验
点赞 回复 分享
发布于 2022-08-27 16:46 河南
第三题我也这么做的,不过不确定是不是最优
点赞 回复 分享
发布于 2022-08-27 17:56 四川

相关推荐

杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
2 3 评论
分享
牛客网
牛客企业服务