JD22. 队列最小修改
描述
输入描述
第一行是一个整数n(1<=n<=10^5),表示序列中数字的数量。 接下来一行有n个数,是1-n的一个全排列。数字之间用空格隔开。输出描述
输出仅包含一个数字,表示至少操作了几次示例1
输入:
5 5 2 1 3 4
输出:
2
说明:
按顺序把 2 和 5 提到队列前C++ 解法, 执行用时: 10ms, 内存消耗: 760KB, 提交时间: 2020-08-09
#include <bits/stdc++.h> using namespace std; #define INIT()ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int MAXN=1e5; int a[MAXN+5]; int main(){ INIT() int n; while(cin>>n){ for(int i=0;i<n;i++)cin>>a[i]; int ans=n-1; for(int i=n-1;i>0;i--){ if(a[i]>a[i-1])ans--; else break; } cout<<ans<<endl; } return 0; }
C++ 解法, 执行用时: 10ms, 内存消耗: 1380KB, 提交时间: 2020-08-29
#include <bits/stdc++.h> using namespace std; #define INIT()ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int MAXN=1e5; int a[MAXN+5]; int main(){ INIT() int n; while(cin>>n){ for(int i=0;i<n;i++)cin>>a[i]; int ans=n-1; for(int i=n-1;i>0;i--){ if(a[i]>a[i-1])ans--; else break; } cout<<ans<<endl; } return 0; }