rudra
BAN USERI will use hashmap with a new class tree Node.
public void listToTree(List<Node> list ){
Map<Integer, NodeTree> map = new HashMap<>();
for(Node n :list){
NodeTree parentNode = map.get(n.parentId);
if(parentNode==null){
parentNode = new NodeTree();
parentNode.id=n.parentId;
parentNode.childernIds.add(n.childId);
map.put(parentNode.id, parentNode);
}
NodeTree nodeTree = map.get(n.childId);
if(nodeTree==null){
nodeTree = new NodeTree();
nodeTree.id=n.childId;
nodeTree.parentId = n.parentId;
map.put(nodeTree.id, nodeTree);
parentNode.childernIds.add(n.childId);
}else{
nodeTree.parentId=n.parentId;
}
}
}
public class NodeTree{
int parentId;
int id;
Set<Integer> childernIds= new HashSet<>();
}
if the numbers are in a range then we can use
array to find out the duplicates. Use numbers as the index of boolean array and mark as you traverse array.
If
array element is already
it is a duplicate.
- rudra January 15, 2017