小红书9.6笔试题
为什么我的代码只通过78%,请大佬指点一下。题意和代码如下:
题目:给出一个长度为 n 的数组,对数组的某个区间进行排序就可以使整个数组变为有序数组,请输出这个需要排序的区间,若是原数组本身是有序的,则输出 -1,-1
例如
输入
3
1 3 2
输出
1
2
输入
4
1 2 3 4
输出
-1
-1
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> num;
vector<int> cop;
for (int i = 0; i < n; i++) {
int te;
cin >> te;
num.push_back(te);
cop.push_back(te);
}
sort(num.begin(), num.end());
int start = -1;
int end = -1;
for (int i = 0; i < n; i++) {
if (num[i ] != cop[i]) {
start = i;
break;
}
}
for (int i = n - 1; i >= 0 & start >= 0; i--) {
if (num[i] != cop[i]) {
end = i;
break;
}
}
cout << start << endl;
cout << end << endl;
return 0;
}



