美文网首页
小公司Scalyr OA Sprint Training

小公司Scalyr OA Sprint Training

作者: manayuan | 来源:发表于2018-10-23 07:59 被阅读0次
    image.png

    给你一个array,对每两个相邻位置i,j,认为[i, j]都被遍历到一次,求被遍历次数最多的indices中最小的index。

    Solution

    • 在每个开始位置记录+1,结束位置的后一个位置-1。遍历时累计之前的值,得到当前位置的遍历次数,最后找到最大的值的index
    public class SprintTraining {
        public static int getMostVisited(int n, List<Integer> sprints) {
            int[] incremental = new int[n + 2];
            for (int i=0; i<sprints.size()-1; i++) {
                int start = Math.min(sprints.get(i), sprints.get(i+1));
                int end = Math.max(sprints.get(i+1), sprints.get(i));
                incremental[start] ++;
                incremental[end + 1] --;
            }
            int[] scores = new int[n+1];
            int score = 0;
            for (int i=1; i<n+1; i++) {
                score += incremental[i];
                scores[i] = score;
            }
            int maxVal = 0, maxValIndex = -1;
            for (int i=1; i<n+1; i++) {
                if (scores[i] > maxVal) {
                    maxVal = scores[i];
                    maxValIndex = i;
                }
            }
            return maxValIndex;
        }
        public static void main(String[] args) {
            int res = getMostVisited(6, Arrays.asList(new Integer[] {2, 4, 1, 3}));
            System.out.println(res); // 2
        }
    }
    

    相关文章

      网友评论

          本文标题:小公司Scalyr OA Sprint Training

          本文链接:https://www.haomeiwen.com/subject/mbhozftx.html