Frequency Queries

  • + 0 comments

    only test case 11 not passed. i think problem in containsValue() method. please help..

    import java.io.; import java.math.; import java.security.; import java.text.; import java.util.; import java.util.concurrent.; import java.util.function.; import java.util.regex.; import java.util.stream.*; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList;

    public class abc {

    // Complete the freqQuery function below.
    static List<Integer> freqQuery(List<int[]> queries) {
        List<Integer> arr = new ArrayList<>(); 
        Map<Integer, Integer> hm = new HashMap<Integer,Integer>();
        int a;
        int b; 
        for(int i=0;i<queries.size();i++)
        {
            a=queries.get(i)[0];
            b=queries.get(i)[1];
    
            if(a==1)
            {
                hm.put(b, hm.getOrDefault(b, 0)+1);
            }
            else if(a==2)
            {
                if(hm.getOrDefault(b, 0)>0)
                {
                    hm.put(b,hm.getOrDefault(b, 0)-1);
                }  
    
            }
            else
            {
                if(hm.containsValue(b))
                {
                    //hm.values().remove(queries.get(i).get(1));
                    arr.add(1);
                }
                else
                {
                    arr.add(0);
                }
            }
        }
        return arr;
    
    }
    

    public static void main(String[] args) throws IOException { try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) { int q = Integer.parseInt(bufferedReader.readLine().trim()); List queries = new ArrayList<>(q); Pattern p = Pattern.compile("^(\d+)\s+(\d+)\s*$"); for (int i = 0; i < q; i++) { int[] query = new int[2]; Matcher m = p.matcher(bufferedReader.readLine()); if (m.matches()) { query[0] = Integer.parseInt(m.group(1)); query[1] = Integer.parseInt(m.group(2)); queries.add(query); } } List ans = freqQuery(queries); try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")))) { bufferedWriter.write( ans.stream() .map(Object::toString) .collect(joining("\n")) + "\n"); } } } }