diff --git a/lc-1365/README.md b/lc-1365/README.md index e69de29..a469d7e 100644 --- a/lc-1365/README.md +++ b/lc-1365/README.md @@ -0,0 +1,51 @@ +# Leetcode 1365 + + +- [Leetcode 1365](#leetcode-1365) + - [Creating a Frequancy Map](#creating-a-frequancy-map) + - [Hammer Tool](#hammer-tool) + + +```js +function reduceArray(nums) { + const sorted = [...nums].sort((a, b) => a - b) + return nums.map((x) => { + nums.indexOf(sorted[x]) + }) +} +``` + +## Creating a Frequancy Map + +```js +function reduceArray(nums) { + const freqMap = new Map() + nums.forEach((x) => { + if (freqMap.has(x)) { + freqMap.set(x, freqMap.get(x) + 1) + } else { + freqMap.set(x, 1) + } + }) + return Array.from(freqMap.entries()).map(([k, v]) => v) +} +``` + +### Hammer Tool + +```js +function hammer(arrOrStr) { + const freq = {}; + for (let item of arrOrStr) { + freq[item] = (freq[item] || 0) + 1; + } + + // Then either: + // A. Return freq map + // B. Sort using freq + return arrOrStr.slice().sort((a, b) => { + if (freq[b] !== freq[a]) return freq[b] - freq[a]; // desc freq + return a < b ? -1 : 1; // tiebreaker + }); +} +```