1、查找和最小的K对数字
/**
* 输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3
输出: [1,2],[1,4],[1,6]
解释: 返回序列中的前 3 对数:
[1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],[11,4],[11,6]
*/
const nums1 = [1,7,11], nums2 = [2,4,6], k = 3;
const find = (arr1, arr2, k) => {
let arr = []
let obj = {}
let res = []
for (let i = 0; i < arr1.length; i++) {
const itemi = arr1[i];
for (let j = 0; j < arr2.length; j++) {
const itemj = arr2[j];
arr.push([itemi, itemj])
}
}
arr.forEach(v => { obj[`${v[0] + v[1]}`] = v })
for (const key in obj) {
res.push(obj[key])
}
return res.splice(0, k)
}
const res = find(nums1, nums2, k)
console.log('====================================');
console.log(res); // [1,2],[1,4],[1,6]
console.log('====================================');
2、扁平数据结构转Tree
/**
* 输入:let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
输出:[
{
"id": 1,
"name": "部门1",
"pid": 0,
"children": [
{
"id": 2,
"name": "部门2",
"pid": 1,
"children": []
},
{
"id": 3,
"name": "部门3",
"pid": 1,
"children": [
// 结果 ,,,
]
}
]
}
]
*/
let arr = [
{ id: 1, name: '部门1', pid: 0 },
{ id: 2, name: '部门2', pid: 1 },
{ id: 3, name: '部门3', pid: 1 },
{ id: 4, name: '部门4', pid: 3 },
{ id: 5, name: '部门5', pid: 4 },
]
const toTree = (arr) => {
const res = []
const obj = []
for (const item of arr) {
obj[item.id] = { ...item, children: [] }
}
for (const item of arr) {
const treeItem = obj[item.id]
if (item.pid === 0) {
res.push(treeItem)
} else {
obj[item.pid].children.push(treeItem)
}
}
return res
}
console.log(toTree(arr));
网友评论