小红书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; }