JSFiddle - React, Tailwind, and code Playground

by Prathameshsb

JavaScript

/**
 * @param {string[][]} cache_entries - The cache entries [[timestamp, key, value], ...]
 * @param {string[][]} queries - The queries [[key, timestamp], ...]
 * @return {number[]} - The answers to the queries
 */
function getQueryAnswers(cache_entries, queries) {
    let cacheMap = new Map(); // Hashmap to store cache data
    
    // Step 1: Store cache entries in a hashmap
    for (let [timestamp, key, value] of cache_entries) {
        if (!cacheMap.has(key)) {
            cacheMap.set(key, new Map());
        }
        cacheMap.get(key).set(timestamp, parseInt(value));
    }

    // Step 2: Process queries efficiently
    let result = [];
    for (let [key, timestamp] of queries) {
        result.push(cacheMap.get(key).get(timestamp)); // Direct lookup
    }

    return result;
}

// Example Test Case
let cache_entries = [
    ["03:00:23", "1e3fg08w", "101"],
    ["12:45:36", "ef41t561", "243"],
    ["21:09:31", "ko0e51j8", "809"]
];

let queries = [
    ["ef41t561", "12:45:36"]
];

console.log(getQueryAnswers(cache_entries, queries)); // Output: [243]