zoukankan      html  css  js  c++  java
  • 339. Nested List Weight Sum

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth.

    Each element is either an integer, or a list -- whose elements may also be integers or other lists.

    Example 1:

    Input: [[1,1],2,[1,1]]
    Output: 10 
    Explanation: Four 1's at depth 2, one 2 at depth 1.

    Example 2:

    Input: [1,[4,[6]]]
    Output: 27 
    Explanation: One 1 at depth 1, one 4 at depth 2, and one 6 at depth 3; 1 + 4*2 + 6*3 = 27.

    dfs,设置一个depth即可

    base case是:当某个元素为integer的时候,sum加上depth * n

    否则继续dfs,depth加一

    time: O(n)  -- n: # of elements of input, space: O(k)  -- k: depth of input

    /**
     * // This is the interface that allows for creating nested lists.
     * // You should not implement it, or speculate about its implementation
     * public interface NestedInteger {
     *     // Constructor initializes an empty nested list.
     *     public NestedInteger();
     *
     *     // Constructor initializes a single integer.
     *     public NestedInteger(int value);
     *
     *     // @return true if this NestedInteger holds a single integer, rather than a nested list.
     *     public boolean isInteger();
     *
     *     // @return the single integer that this NestedInteger holds, if it holds a single integer
     *     // Return null if this NestedInteger holds a nested list
     *     public Integer getInteger();
     *
     *     // Set this NestedInteger to hold a single integer.
     *     public void setInteger(int value);
     *
     *     // Set this NestedInteger to hold a nested list and adds a nested integer to it.
     *     public void add(NestedInteger ni);
     *
     *     // @return the nested list that this NestedInteger holds, if it holds a nested list
     *     // Return null if this NestedInteger holds a single integer
     *     public List<NestedInteger> getList();
     * }
     */
    class Solution {
        public int depthSum(List<NestedInteger> nestedList) {
            return dfs(nestedList, 1);
        }
        
        private int dfs(List<NestedInteger> nestedList, int depth) {
            int sum = 0;
            for(NestedInteger n : nestedList) {
                if(n.isInteger())
                    sum += depth * n.getInteger();
                else
                    sum += dfs(n.getList(), depth + 1);
            }
            return sum;
        }
    }
  • 相关阅读:
    Docker常用基础命令详解
    Docker安装教程(超详细)
    IDEA 新建 Java 项目 (图文讲解, 良心教程)
    SpringBoot2.0之@Configuration注解
    idea的安装和无限期试用
    vue 取消上次请求
    calc()使用通用的数学运算规则,但是也提供更智能的功能:
    pdfh5 移动端 查看pdf
    Git处理Failed to connect to www.google.com port 80: Timed out
    对象排序
  • 原文地址:https://www.cnblogs.com/fatttcat/p/10142772.html
Copyright © 2011-2022 走看看