java通关整理汇总-Java基础、计算机网络、数据库、设计模式、框架、算法模板、笔试
1.给定一个数组,找出两个索引位置,使得这之间的元素排序后,数组是升序
只有78%,一直报时间超限
public static int[] subSort(int[] arr) {
int[] brr = new int[arr.length];
brr = Arrays.copyOf(arr,arr.length);
Arrays.sort(brr);
int[] a = new int[]{-1,-1};
for (int i = 0;i<arr.length;i++){
if(arr[i] != brr[i]){
a[0] = i;
break;
}
}
for (int i = arr.length - 1;i>=0;i--){
if(arr[i] != brr[i]){
a[1] = i;
break;
}
}
return a;
}
package xiaohongshu;
import java.util.Scanner;
public class main1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int[] b = new int[k];
for (int i = 0;i<k;i++){
b[i] = sc.nextInt();
}
int[] c = new int[2];
c= subSort(b);
for (int i : c){
System.out.println(i);
}
}
public static int[] subSort(int[] arr) {
if(arr == null||arr.length<=1)
return new int[]{-1,-1};
int right = -1;
int left = -1;
int max = -100;
int min = 100;
for(int i = 0;i<arr.length;i++){
if (arr[i] <= max) {
right = i;
}else {
max = Math.max(max,arr[i]);
}
if(arr[arr.length - 1 - i] >= min){
left = arr.length - 1 - i;
}else {
min = Math.min(min,arr[arr.length - 1 - i]);
}
}
int[] a = new int[2];
a[0] = left;
a[1] = right;
return a;
}
}
2.给定一个二维数组,找出没出现的最小的自然数
例如:1,2,3 ,5
输出:4
static int findMin(int[][] arr) {
int n = arr.length;
int m = arr[0].length;
int[] a = new int[n*m];
int k = 0;
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
a[k++] = arr[i][j];
}
}
Arrays.sort(a);
int i= 0;
for(i = 0;i<a.length;i++){
if(a[i]!=i+1){
return i+1;
}
}
return i;
}
3.距离终点X,船舶最小移动距离为l,最大距离为t,然后有n个危险点,求船舶在危险区停留的最少次数
蹲一个大佬代码…