京东笔试题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; } }