京东笔试题Java后端
第一题100%第二题90%
import java.util.*;
public class JDQ1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
List<int[]>edges=new ArrayList<int[]>();
for(int i=0;i<n-1;i++) {
int[]temp=new int[2];
temp[0]=sc.nextInt();
temp[1]=sc.nextInt();
edges.add(temp);
}
System.out.print(new JDQ1().getMinTime(n, edges));
}
public int getMinTime(int n,List<int[]>edges) {
JDQ1TreeNode root=generate(n,edges);
List<Integer>list=new ArrayList<Integer>();
for(JDQ1TreeNode temp:root.children)
list.add(new JDQ1TreeNode().getNumberOfNodes(temp));
return Collections.max(list);
}
public JDQ1TreeNode generate(int n,List<int[]>edges) {
JDQ1TreeNode[]nodes=new JDQ1TreeNode[n];
for(int i=0;i<n;i++)nodes[i]=new JDQ1TreeNode(i,null);
nodes[0].children=new HashSet<JDQ1TreeNode>();
while(!edges.isEmpty())
for(int i=0;i<edges.size();i++) {
//System.out.println(edges.size());
int[]temp=edges.get(i);
int begin=temp[0]-1,end=temp[1]-1;
if(nodes[begin].children!=null) {
nodes[begin].children.add(nodes[end]);
if(nodes[end].children==null)nodes[end].children=new HashSet<JDQ1TreeNode>();
edges.remove(i);
}
else if(nodes[end].children!=null) {
nodes[end].children.add(nodes[begin]);
if(nodes[begin].children==null)nodes[begin].children=new HashSet<JDQ1TreeNode>();
edges.remove(i);
}
}
return nodes[0];
}
}
class JDQ1TreeNode{
int id;
HashSet<JDQ1TreeNode> children;
public JDQ1TreeNode(int id,HashSet<JDQ1TreeNode> children) {
super();
this.id = id;
this.children = children;
}
public JDQ1TreeNode() {}
public int getHeight(JDQ1TreeNode root) {
if(root.children==null)return 1;
List<Integer>list=new ArrayList<Integer>();
for(JDQ1TreeNode temp:root.children)
list.add(getHeight(temp));
return Collections.max(list)+1;
}
public int getNumberOfNodes(JDQ1TreeNode root) {
if(root.children==null)return 1;
int sum=0;
for(JDQ1TreeNode temp:root.children)
sum+=(getNumberOfNodes(temp));
return sum+1;
}
}
查看26道真题和解析
