编程问题以找到数组中的最低MaxVisits

时间:2018-12-25 21:26:01

标签: algorithm

节日快乐。给了我一个小于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)。有没有更好的方法可以做到这一点。

谢谢。

0 个答案:

没有答案