简直觉得这个题目就是 为了让我好好深入学习一下 SORT函数 量身定制的
及时更新 我的第一种方法可以通过五分之一
新的方法通过三分之一 并且更简单


初步 第一种
java
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String args[]) {
Scanner myin = new Scanner(System.in);
int n=myin.nextInt();
int fir[]=new int[n];
int sec[]=new int[n];
int count=0;
for(int i=0;i<n;i++) {
fir[i]= myin.nextInt();
sec[i]=fir[i];}
Arrays.sort(fir);
if(!(check(fir, sec))) {
for(int i=0; i<=n; i++) {
//使用sort函数 排序固定的位置
Arrays.sort(sec,0,i);
if(check(fir, sec)) {
System.out.println(i);
break;
}
}
}
else {
System.out.println(0);
}
}
public static boolean check(int[] arr1, int[] arr2) {
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
}
新更新(1/3)
AI的题解考虑了许多因素 包括最后还考虑了数组长度不相等的情况 但是是没有必要的 因为在本题中 截取的数组一定相同
不过也总归是有用的 学习了 复制数组 判断数组的快捷语句
java
//复制数组到指定数组
int arr1[]= Arrays.copyOfRange(arr2,str,end);
//比较数组
boolean con = Arrays.equals(arr1,arr2);
java
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String args[]) {
Scanner myin = new Scanner(System.in);
int n = myin.nextInt();
int[] sec = new int[n];
int[] fir = new int[n];
for (int i = 0; i < n; i++) {
sec[i] = myin.nextInt();
fir[i] = sec[i];
}
Arrays.sort(fir);
int k = n;
while (k > 0 && sec[k - 1] == fir[k - 1]) {
k--;
}
if (k == 0) {
System.out.println(0);
return;
}
// 下面的都不需要
//int[] secPrefix = Arrays.copyOfRange(sec, 0, k);
//int[] firPrefix = Arrays.copyOfRange(fir, 0, k);
//Arrays.sort(secPrefix);
//if (Arrays.equals(secPrefix, firPrefix)) {
System.out.println(k);
// } else {
// System.out.println(k + 1);
// }
}
}