极米笔试-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);
    }

#极米科技##笔经#
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务