Async Cache (Count API Calls)
JavaScript
Medium
2 views
Problem Description
You have q keys. API for key k returns k*k. Use caching so each distinct key calls API only once. Print apiCalls, then outputs for each query.
Input Format
Line1: q. Line2: q integers keys.
Output Format
Line1: apiCalls. Line2: q outputs.
Official Solution
const fs=require('fs');const raw=fs.readFileSync(0,'utf8').trim();if(!raw)process.exit(0);const a=raw.split(/\\s+/);let i=0;const q=Number(a[i++]);let keys=[];for(let j=0;j<q;j++)keys.push(a[i++]);let calls=0;const cache=new Map();const api=async k=>{calls++;await Promise.resolve();const x=BigInt(k);return x*x;};(async()=>{let out=[];for(const k of keys){if(!cache.has(k))cache.set(k,api(k));out.push((await cache.get(k)).toString());}process.stdout.write(calls+'\
'+out.join(' '));})();
Solutions (0)
No solutions submitted yet. Be the first!
No comments yet. Start the discussion!