console.log("Hello world! - js.jsrun.net ");
function sortByFrequency(arr) {
const ans = {};
arr.forEach(num => {
if(ans[num]) {
ans[num]++;
}else {
ans[num] = 1;
}
})
const sortElement = Object.entries(ans).sort((a,b) => {
if(a[1] === b[1]) {
return a[0]-b[0];
}
return b[1]-a[1];
})
const res = sortElement.map(item => parseInt(item[0]));
return res;
}
const arr = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
console.log(sortByFrequency(arr));
class TreeNodes {
constructor(id) {
this.id = id;
this.children = [];
}
}
function buildTree(nodes) {
const nodeDict = {};
let root = null;
nodes.forEach(nodeInfo => {
const node = new TreeNodes(nodeInfo.id);
nodeDict[node.id] = node;
})
nodes.forEach(nodeInfo => {
const node = nodeDict[nodeInfo.id];
if(nodeInfo.parentid === null) {
root = node;
} else {
const parentNode = nodeDict[nodeInfo.parentid];
parentNode.children.push(node);
}
})
return root;
}
function postorder(node,res) {
if(!node) return ;
node.children.forEach(child => postorder(child,res));
res.push(node.id);
}
const nodes = [
{ id: 1, parentid: null },
{ id: 2, parentid: 1 },
{ id: 3, parentid: 1 },
{ id: 4, parentid: 2 },
{ id: 5, parentid: 2 }
];
const root = buildTree(nodes);
const result = [];
postorder(root, result);
console.log(result);
function inst(left,right) {
let proto = left.__proto__;
let prototype = right.prototype;
while(true) {
if(!proto) return false;
if(proto == prototype) return true;
proto = Object.getPrototypeOf(proto);
}
}
function deep(target,map = new WeakMap()) {
if (target === null || typeof target !== 'object') {
return target;
}
const obj = Array.isArray(target) ? []:{};
map.set(target,obj);
for(let key in target) {
if(target.hasOwnProperty(key)) {
obj[key] = deep(target[key],map);
}
}
return obj;
}