萌新求助时间复杂度分析
  • 板块学术版
  • 楼主UKE_bound
  • 当前回复12
  • 已保存回复12
  • 发布时间2024/9/30 16:14
  • 上次更新2024/9/30 17:39:26
查看原帖
萌新求助时间复杂度分析
1073741
UKE_bound楼主2024/9/30 16:14
#include<bits/stdc++.h>
using namespace std;
int a[100005],d[100005];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	a[n+1]=0x3f3f3f3f;
	d[n]=n+1;
	for(int i=n-1;i>=1;i--){
		if(a[i]<a[i+1]){
			d[i]=i+1;
		}else{
			int now=d[i+1];
			while(a[now]<a[i]){
				now=d[now];
			}
			d[i]=now;
		}
	}
	for(int i=1;i<=n;i++){
		cout<<d[i]<<" ";
	}
}

求本程序时间复杂度。
本萌新一开始认为它是 O(n2)O(n^2) 的,但交到一个数据范围是 n105n \le 10^5 的题目上居然过了。

2024/9/30 16:14
加载中...