字节跳动2018算法岗笔试题



图片说明
利用预排序的方法,可以通过80%

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int num = 0;
    cin >> num;
    if (num == 0) return 0;
    vector<vector<int>> points(num, vector<int> (2, -1));
    for (int i = 0; i < num; i++) {
        cin >> points[i][0];
        cin >> points[i][1];
    }
    auto cmp = [&] (const vector<int>& a, const vector<int>& b) {
        return a[1] > b[1];
    };
    sort(points.begin(), points.end(), cmp);
    cout<<points[0][0]<<" "<<points[0][1]<<" "<<endl;
    int curX = points[0][0];
    for (int i = 1; i < points.size(); i++) {
        if (points[i][0] > curX) {
            cout<<points[i][0]<<" "<<points[i][1]<<" "<<endl;
            curX = points[i][0];
        }
    }
    return 0;
}

图片说明
图片说明
因为每次处理的都是一个包含最小值的区间,因此可以利用单调栈,对包含每一个最小值的最长区间做线性处理。十分巧妙。

#include<vector>
#include<stack>
#include<iostream>
using namespace std;
int main() {
    int n = 0;
    cin >> n;
    stack<int> st;
    vector<int> vec(n);
    vector<int> preSum(n + 1, 0);
    int maxVal = -1;
    for (int i = 0; i < n; i++) {
        cin >> vec[i];
        preSum[i + 1] = preSum[i] + vec[i];
    }
    for (int i = 0; i < n; i++) {
        while (!st.empty() && vec[i] < vec[st.top()]) {
            auto cur = st.top();
            st.pop();
            if (!st.empty()) {
                maxVal = max(maxVal, (preSum[i] - preSum[st.top() + 1])*vec[cur]);
            }
            else maxVal = max(maxVal, preSum[i]*vec[cur]);
        }
        st.push(i);
    }
    while (!st.empty()) {
        auto cur = st.top();
        st.pop();
        if (!st.empty()) {
            maxVal = max(maxVal, (preSum[n]-preSum[st.top() + 1])*vec[cur]);
        }
        else maxVal = max(maxVal, preSum[n]*vec[cur]);
    }
    cout<<maxVal;
    return 0;
}
全部评论

相关推荐

01-14 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
2025-12-18 11:59
广州南方学院 C++
牛客78682892...:直接点还好,总比要了简历也不回的强
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务