美文网首页
子串——依旧是符合要求最小串(七)

子串——依旧是符合要求最小串(七)

作者: 旺叔叔 | 来源:发表于2018-11-22 17:15 被阅读0次

LeetCode_632_SmallestRange

题目分析:

合并为一个数组,升序排序,并记录好每个值所在的数组。就成了第6题的原题了。

解法:

public static int[] smallestRange(List<List<Integer>> nums) {
    int[] res = new int[2];
    List<Pair> v = new ArrayList<>();
    Map<Integer, Integer> m = new HashMap<>();
    for (int i = 0; i < nums.size(); ++i)
        for (int num : nums.get(i))
            v.add(new Pair(num, i));

    Collections.sort(v);

    int left = 0, n = v.size(), k = nums.size(), cnt = 0, diff = Integer.MAX_VALUE;
    for (int right = 0; right < n; ++right) {
        if (! m.containsKey(v.get(right).second) || 0 == m.get(v.get(right).second))
            ++cnt;

        m.put(v.get(right).second, m.getOrDefault(v.get(right).second, 0) + 1);

        while (cnt == k && left <= right) {
            if (diff > v.get(right).first - v.get(left).first) {
                diff = v.get(right).first - v.get(left).first;
                res = new int[]{v.get(left).first, v.get(right).first};
            }

            m.put(v.get(left).second, m.get(v.get(left).second) - 1);
            if (0 == m.get(v.get(left).second)) --cnt;

            ++left;
        }
    }
    return res;
}

private static class Pair implements Comparable<Pair>{
    public int first;
    public int second;
    public Pair(int first, int second){
        this.first = first;
        this.second = second;
    }

    @Override
    public int compareTo(Pair o) {
        return this.first - o.first;
    }
}

相关文章

  • 子串——依旧是符合要求最小串(七)

    LeetCode_632_SmallestRange 题目分析: 解法:

  • 子串——符合要求最小串(五)

    LeetCode_209_MinimumSizeSubarraySum 题目分析: 解法:

  • 子串——还是符合要求最小串(六)

    LeetCode_76_MinimumWindowSubstring 题目分析: 解法:

  • 2019-10-24

    集上夺命小串--撸串就撸最精致的串串 告别“小脏店”,“沿街摊”--吃串串也要吃最精致的串串,在夺命小串,做一枚精...

  • 动态规划之最大公共子序列

    题目的大意是已知两个字符串,求两个字符串的最大公共子序列。假设串X[i]是大串,Y[j]是小串,(i>j)那么在问...

  • 《朋友们都丢到了哪里》

    一个个 那么鲜活的 三十年积攒下来的 朋友们 不分先后 不论长弱 统统随着一小串一小串的数字 丢了 这些年 我们已...

  • 132. 分割回文串 II

    给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。输入:s = ...

  • 02 石头

    冬子走向营区角落的一个小楼,标号043,标号下面还有一小串字符,看上去不是很清楚。 进去找了间面朝西的房间,冬子无...

  • LeetCode 132. 分割回文串 II

    题目 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的最少分割次数 。 例:输入...

  • 如此商家

    昨天去吃的串店,主打海鲜粥、小串,我不爱喝粥,冲着小串去的。 味道合格,环境不错,吃烧烤本身在意的是那么一种烟火气...

网友评论

      本文标题:子串——依旧是符合要求最小串(七)

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