题解 | #代理服务器#

代理服务器

http://www.nowcoder.com/practice/1284469ee94a4762848816a42281a9e0

贪心:

选取走最大步数的代理服务器,依次循环,由于第一次切换代理服务器不算开销,最后结果减一即可。

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()) {
            HashMap<String, Boolean> hashMap = new HashMap<>();
            int n = scanner.nextInt();
            for (int i = 0; i < n; i++) {
                hashMap.put(scanner.next(), true);
            }

            int m = scanner.nextInt();
            String[] b = new String[m];
            for (int i = 0; i < m; i++) {
                b[i] = scanner.next();
            }

            int count = 0;
            int i = 0;
            while (i < b.length) {
                int maxStep = getMaxStep(b, i, hashMap);
                if (maxStep == 0) {
                    count = 0;
                    break;
                }
                i += maxStep;
                count++;
            }
            System.out.println(count-1);

        }
    }

    private static int getMaxStep(String[] b, int start, HashMap<String, Boolean> hashMap) {
        int i = start;
        for (; i < b.length; i++) {
            if (hashMap.containsKey(b[i])) {
                hashMap.put(b[i], false);
            }
            if (allFalse(hashMap)) {
                reset(hashMap);
                return i - start;
            }
        }
        return i - start;
    }

    private static void reset(HashMap<String, Boolean> hashMap) {
        for (Map.Entry<String, Boolean> entry : hashMap.entrySet()) {
            hashMap.put(entry.getKey(), true);
        }
    }

    private static boolean allFalse(HashMap<String, Boolean> hashMap) {
        for (Map.Entry<String, Boolean> entry : hashMap.entrySet()) {
            if (entry.getValue()) {
                return false;
            }
        }
        return true;
    }
}
全部评论

相关推荐

07-14 12:29
门头沟学院 Java
后端岗,实习三周感觉有点想跑路了,担心秋招被拉黑,有没有佬是字节HR知道情况的
从零开始的转码生活:你实习三周都想跑路,将来拿到offer真的愿意在这干十几二十年吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务