牛客网真题-74-用户喜欢

用户喜好

http://www.nowcoder.com/questionTerminal/d25162386a3140cbbe6dc071e1eb6ed6

import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
        for(int i = 0; i < n; i++){
            int key = scanner.nextInt();
            if(!map.containsKey(key)){
                map.put(key, new ArrayList<>());
            }
            map.get(key).add(i + 1);
        }
        int m = scanner.nextInt();
        for(int i = 0; i < m; i++){
            int l = scanner.nextInt(), r = scanner.nextInt(), k = scanner.nextInt();
            int cnt = 0;
            ArrayList<Integer> arr = map.get(k);
//            System.out.println(arr.toString() + " " + k);
            int p = 0, q = arr.size() - 1;
            while (p < q) {
                int mid = (p + q) / 2;
                if(arr.get(mid) < l){
                    p = mid + 1;
                }else if(arr.get(mid) > l){
                    q = mid - 1;
                }else{
                    q = mid - 1;
                }
            }
//            System.out.println(p + " " + q);
            while (q < arr.size()) {
                if(q >= 0 && arr.get(q) >= l && arr.get(q) <= r){
                    cnt++;
                }
                if(q >= 0 && arr.get(q) > r){
                    break;
                }
                q++;
            }
                        System.out.println(cnt);
        }

    }
}
全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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