/**
* @param {number[][]} points
* @param {number} K
* @return {number[][]}
*/
function getDistance(x, y) {
return x * x + y * y
}
var kClosest = function (points, K) {
let results = []
const closestSoFar = [],
pointsHash = {},
len = points.length
for (let i = 0; i < len; i++) {
const curr = getDistance(points[i][0], points[i][1])
const csfLen = closestSoFar.length
if (csfLen < K) {
if (!csfLen || curr >= closestSoFar[csfLen - 1]) {
closestSoFar.push(curr)
} else {
closestSoFar.shift(curr)
}
} else {
closestSoFar.sort((a, b) => a - b)
closestSoFar[csfLen - 1] =
csfLen === 1
? Math.min(closestSoFar[csfLen - 1], curr)
: Math.max(closestSoFar[csfLen - 1], curr)
}
if (!pointsHash[curr]) {
pointsHash[curr] = [points[i]]
} else {
pointsHash[curr].push(points[i])
}
}
closestSoFar.forEach((item) => {
results = results.concat(pointsHash[item])
})
return results
}
// //Test cases
console.log(kClosest([([3, 3], [5, -1], [-2, 4])], 2))
// console.log(kClosest([[1, 3], [-2, 2]], 1))
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function (strs) {
const wordHash = {},
results = []
strs.forEach((word) => {
const sorted = word.split('').sort().join('')
if (!wordHash[sorted]) {
wordHash[sorted] = [word]
} else {
wordHash[sorted].push(word)
}
})
Object.values(wordHash).forEach((arr) => {
results.push(arr)
})
return results
}
// console.log(groupAnagrams(['eat', 'tea', 'tan', 'ate', 'nat', 'bat']))
function minMeetingRooms(times) {
if (!times.length) return 0
const start = [],
end = [],
len = times.length
let count,
maxCount,
i = 0,
j = 0
times.forEach((time) => {
start.push(time[0])
end.push(time[1])
})
start.sort((a, b) => a - b)
end.sort((a, b) => a - b)
while (i < len) {
if (count === undefined) {
count = 1
maxCount = 1
} else if (start[i] === start[i + 1]) {
count++
maxCount = Math.max(count, maxCount)
} else if (start[i] < end[j]) {
count++
maxCount = Math.max(count, maxCount)
} else {
count--
j++
}
i++
}
return maxCount
}
// console.log(minMeetingRooms([[0, 30], [5, 10], [15, 20]]))
// console.log(minMeetingRooms([[1, 5], [8, 9], [8, 9]]))
console.log(
minMeetingRooms([
[6, 10],
[13, 14],
[12, 14],
])
)
graph = {
$id: '1',
neighbors: [
{
$id: '2',
neighbors: [
{ $ref: '1' },
{
$id: '3',
neighbors: [
{ $ref: '2' },
{ $id: '4', neighbors: [{ $ref: '3' }, { $ref: '1' }], val: 4 },
],
val: 3,
},
],
val: 2,
},
{ $ref: '4' },
],
val: 1,
}
console.log(graph.neighbors[0])