qq_45735316 2020-10-16 12:46 采纳率: 88.9%
浏览 54
已采纳

这段代码有错吗?时间复杂度是多少?

图片说明
两个运行结果:
输入1:5
1 2 5 3 5
输出:2
输入:6
1 2 3 4 5 6
输出:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int n=0;
    cin >> n;
    int* a = new int[n];
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    int s = 0;
    int* m = new int[n]();
    m[0] = a[0];
    int min = m[0];
    for (int i = 0; i < n; i++)//求
    {
        if (a[i] < min)
            min = a[i];
        m[i] = min;
        //cout <<setw(2)<< m[i];
    }
    int* M = new int[n]();
    M[n - 1] = a[n - 1];
    int max = a[n - 1];
    for (int i = n - 1; i >= 0; i--)
    {
        if (a[i] > max)
            max = a[i];
        M[i] = max;
        //cout << setw(2) << M[i];
    }
    for (int i = 1; i < n-1; i++)
    {
        if (m[i] < a[i] && a[i] < M[i])
            s++;
    }
    cout << s;
    delete[]a;
    delete[]m;
    delete[]M;
    return 0;
}

展开全部

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-10-16 15:55
    关注

    你这个一层循环,所以就是 O(n)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部