极米笔试-10.20
// 求二叉树每一层的平均值 AC100% public double[] averageOfLevels(TreeNode root) { if (root == null) { return new double[0]; } Queue<TreeNode> queue = new LinkedList<>(); List<Double> list = new ArrayList<>(); queue.offer(root); for (; !queue.isEmpty(); ) { int sz = queue.size(); long sum = 0; for (int i = 0; i < sz; i++) { TreeNode poll = queue.poll(); if (poll != null) { sum += poll.val; if (poll.left != null) { queue.offer(poll.left); } if (poll.right != null) { queue.offer(poll.right); } } } double avg = (double) sum / (double) sz; list.add(avg); } return list.stream().mapToDouble(d -> d).toArray(); } // 对于给定的字符s,给定一个indices,把s[i]调整到第s[indices[i]]处 // AC 100% public String shuffle(String s, int[] indices) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < indices.length; i++) { map.put(indices[i], i); } char[] chars = new char[s.length()]; for (int i = 0; i < s.length(); i++) { chars[i] = s.charAt(map.get(indices[i])); } return new String(chars); }
#极米科技##笔经#