谁能告诉我下面代码的时间复杂度?

问题描述 投票:0回答:1
vector <int> alternateNumbers(vector<int>&a) {
    // Write your code here.
    bool pos = true;
    int n = a.size();
    vector<int> ans;
    int i = 0, j = 0;
    while(ans.size() != n){
        if(pos){
            if(a[i] >= 0){
                ans.push_back(a[i]);
                pos = false;
            }
            i++;
        }
        else{
            if(a[j] < 0){
                ans.push_back(a[j]);
                pos = true;
            }
            j++;
        }
    }

    return ans;

我想知道代码的复杂性大多数情况下,当我得到一个正数时,我会增加i,当我得到一个负数时,我会增加j。根据问题,我将得到向量 a 作为整数数组,其中存在相同数量的正数和负数。

c++ time-complexity space-complexity
1个回答
0
投票

我想说的是 Big-O 表示法(最坏情况)是 O(n)。在 Big-Omega 表示法(最好的情况)中是 Omega(1)。毕竟是单周期加1。

如果您不想自己探索如何估计它,有很多工具可以或多或少准确地为您完成此任务(即TimeComplexityAI,...)

© www.soinside.com 2019 - 2024. All rights reserved.