2026-07-11 14:28:02 -04:00
|
|
|
# Leetcode 1365
|
|
|
|
|
|
|
|
|
|
<!--toc:start-->
|
|
|
|
|
- [Leetcode 1365](#leetcode-1365)
|
|
|
|
|
- [Creating a Frequancy Map](#creating-a-frequancy-map)
|
|
|
|
|
- [Hammer Tool](#hammer-tool)
|
|
|
|
|
<!--toc:end-->
|
|
|
|
|
|
|
|
|
|
```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
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
```
|