4.10 拼多多笔试第一题

第一道题我自测怎么都能通过,可是提交只有20%,求个大佬帮我看看,第一次笔试,真的感觉自己好菜

#include<bits/stdc++.h>
using namespace std;

int main() { 
    int n;
    cin >> n;
    int color;

    vector<int> arr;
    set<int> set;
    while(n--) {
        cin >> color;
        arr.emplace_back(color);
        if(set.count(color)==0) set.insert(color);
    }
    // 处理数据
    vector<vector<int>> res;

    for(auto i = set.begin(); i != set.end(); i++){
        int interval = 0;
        int temp = 0;
        int count = 0;
        int error = 0;
        int pre = 0;
        for(int j = 0; j < arr.size(); j++) {
            if(arr[j] == *i) {
                count++;
                // 说明是第一个
                if(count == 1) {
                    pre = j;
                }
                else if (count == 2) {
                    interval = j - pre;
                }
                else {
                    if(j - pre != interval) {
                        error = 1;
                        break;
                    }
                pre = j;
                }
            }
        }
        if(error == 0) {
            vector<int> temp1 = {*i, interval};
            res.emplace_back(temp1);
        }
    }

    cout << res.size()<<endl;
    sort(res.begin(), res.end(),[](const vector<int>& a,vector<int> &b){
       return a[0] < b[0]; 
    });

    for(auto a : res) {
        for(auto b : a) {
            cout << b << ' ';
        }
        cout << endl;
    }
}
#拼多多笔试##笔试题目##拼多多#
全部评论
思路不太对,按颜色分桶vector<vector<int>>,然后分别计算每个桶是不是等差数列即可
1 回复 分享
发布于 2022-04-10 21:38

相关推荐

2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务