美文网首页
339-嵌套列表权重和

339-嵌套列表权重和

作者: 饮酒醉回忆 | 来源:发表于2019-06-19 11:18 被阅读0次

    嵌套列表权重和

    题目

    给定一个嵌套的整数列表,请返回该列表按深度加权后所有整数的总和。

    每个元素要么是整数,要么是列表。同时,列表中元素同样也可以是整数或者是另一个列表。

    示例 1:

    输入: [[1,1],2,[1,1]]
    输出: 10 
    解释: 因为列表中有四个深度为 2 的 1 ,和一个深度为 1 的 2。
    

    示例 2:

    输入: [1,[4,[6]]]
    输出: 27 
    解释: 一个深度为 1 的 1,一个深度为 2 的 4,一个深度为 3 的 6。所以,1 + 4*2 + 6*3 = 
    27。
    

    思路

    首先是对题目给出的接口理解,和判断文件,文件夹是一个意思.使用递归来解决

    代码

    /**
     * // 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 getDepthSum(nestedList, 1);
        }
        
        private int getDepthSum(List<NestedInteger> nestedList, int curDepth){
            int sum = 0;
            for(NestedInteger ni : nestedList){
                if(ni.isInteger()){
                    sum += ni.getInteger() * curDepth;
                }else {
                    sum += getDepthSum(ni.getList(), curDepth+1);
                }
            }
            return sum;
        }
    }
    

    相关文章

      网友评论

          本文标题:339-嵌套列表权重和

          本文链接:https://www.haomeiwen.com/subject/ctphqctx.html