节日快乐。给了我一个小于o(n ^ 2)的问题。给定一个整数列表,其中每个数字代表小道中的标记,跑步者从一个标记运行到另一个标记,并且在所有冲刺之后,我们需要找到该标记的最小最大访问量。
例如,给定类似[1,5,2,7,3,10]的数组,我们必须返回标记3,因为它是跑步者越过最大时间的最低标记。
package io.sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class LowestMaxVisitsNumberInArray {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(5);
list.add(2);
list.add(7);
list.add(3);
list.add(10);
int [] arr = new int[10];
List<Integer> list1 = new ArrayList<>();
long smillis = System.currentTimeMillis() % 1000;
for(int i=0; i<list.size()-1; i++){
int start = list.get(i)-1;
int end = list.get(i+1)-1;
if(start > end){
int temp = start;
start = end;
end = temp;
}
for(int j=start; j<=end; j++){
arr[j]++;
}
}
int maxVisits = -1;
int index = -1;
for(int k=0;k<arr.length;k++){
if(arr[k] > maxVisits){
index = k;
maxVisits = arr[k];
}
}
System.out.println("Here is the final array"+Arrays.toString(arr));
long emillis = System.currentTimeMillis() % 1000;
System.out.println("Time taken---"+ (emillis-smillis));
System.out.println("Here is the highest---"+(index+1));
}
}
这是我的程序,它是o(n ^ 2)。有没有更好的方法可以做到这一点。
谢谢。