大神看下 京东烽火台那个题是怎么搞的

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
 int main()
{
    int n;
    cin >> n;
    vector<int> vec(2 * n,0);
    int i = 0;
    int high;
    while (i < n && cin >> high){
        vec[i++] = high;
    }
    int res = n;
    for (i = 0;i < n;++i){
        vec[i + n] = vec[i];
    }
    for (int a = 0;a < n;++a){
        for (int b = a + 2;b < a + n - 1 && vec[a] != vec[b];++b){
            int key = min(vec[a],vec[b]);
            bool isLit = true;
            for (int j = a + 1;j <= b - 1;++ j){
                if (vec[j] > key){
                    isLit = false;
                    break;
                }
            }
            if (isLit) ++res;
            if (isLit)cout << vec[a] << " " << vec[b] <<endl;
        }
    }
    cout << res << endl;
    return 0;
}
n^3的复杂度,思路是相邻的肯定可以,然后穷举任意两个,它们之间的山峰都比a,b的要低,因为是环状,所以是2*n的长度,可以实现环状的效果
#京东##C++工程师#
全部评论
我是在列表前面,增加了一个自己,后面增加了一个自己,实现环 2n^2的复杂度。
点赞 回复 分享
发布于 2016-09-05 21:38

相关推荐

“校招”、“3-5年经验”
飞花断音:小公司招逆向的不要去,基本上都是搞黑灰产违法的东西
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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