奇安信Java服务端
1、终止进程,过了91%,有点并查集思想
private static int count = 1; public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String[] pid = bufferedReader.readLine().split(" "); String[] ppid = bufferedReader.readLine().split(" "); int killp = Integer.parseInt(bufferedReader.readLine()); int max = 0; for(int i=0;i<pid.length;i++){ if(Integer.parseInt(pid[i])>max){ max = Integer.parseInt(pid[i]); } } int[] array = new int[max+1]; Arrays.fill(array,-1); for(int i=0;i<ppid.length;i++){ array[Integer.parseInt(pid[i])] = Integer.parseInt(ppid[i]); } find(array,killp); System.out.println(count); } private static void find(int[] array,int i){ for(int j=0;j<array.length;j++){ if(array[j]==i){ count++; array[j]=-1; find(array,j); } } }2、找祖父节点AC,leetcode有原题
static class TreeNode{ int val; TreeNode left = null; TreeNode right = null; TreeNode(int val){ this.val = val; } } private static TreeNode buildtree(TreeNode node,int val){ if(node == null){ node = new TreeNode(val); }else if(val<node.val){ node.left = buildtree(node.left,val); }else{ node.right = buildtree(node.right,val); } return node; } public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int level = Integer.parseInt(bufferedReader.readLine()); String[] mynode = bufferedReader.readLine().split(" "); String[] findnode = bufferedReader.readLine().split(" "); if(Integer.parseInt(findnode[0])==0||Integer.parseInt(findnode[1])==0) System.out.println(-1); else{ int flag = 0; for(int i=0;i<mynode.length;i++){ if(Integer.parseInt(mynode[i])==Integer.parseInt(findnode[0])||Integer.parseInt(mynode[i])==Integer.parseInt(findnode[1])) flag++; } if(flag==2){ TreeNode root = new TreeNode(Integer.parseInt(mynode[0])); for(int i=1;i<mynode.length;i++) buildtree(root,Integer.parseInt(mynode[i])); int res = findroot(root,Integer.parseInt(findnode[0]),Integer.parseInt(findnode[1])); System.out.println(res); }else{ System.out.println(-1); } } } private static int findroot(TreeNode root,int val1,int val2){ if(root==null) return -1; if(root.val==val1||root.val==val2) return root.val; int left = findroot(root.left,val1,val2); int right = findroot(root.right,val1,val2); if(left==-1&&right==-1) return -1; if(left==-1){ return root.right.val; } if(right==-1){ return root.left.val; } return root.val; }