Java Two Pass DFS solution


  • 14
    C
    /**
     * // This is the interface that allows for creating nested lists.
     * // You should not implement it, or speculate about its implementation
     * public interface NestedInteger {
     *
     *     // @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();
     *
     *     // @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();
     * }
     */
    
    public class Solution {
        
        public int depthSumInverse(List<NestedInteger> nestedList) {
            if(nestedList == null || nestedList.size() == 0) return 0;
            int h = helper(nestedList);
            int res = getSum(nestedList, h);
            return res;
        }
        private int getSum(List<NestedInteger> l, int layer) {
            int sum = 0;
            if(l == null || l.size() == 0) return sum;
            for(NestedInteger n : l) {
                if(n.isInteger()) sum += n.getInteger() * layer;
                else sum += getSum(n.getList(), layer - 1);
            }
            return sum;
        }
        private int helper(List<NestedInteger> l) {
            if(l == null || l.size() == 0) return 0;
            int max = 0;
            for(NestedInteger n : l) {
                if(n.isInteger()) max = Math.max(max, 1);
                else max = Math.max(max, helper(n.getList()) + 1);
            }
            return max;
        }
    }

  • 0

    I like your solution!


  • 0
    C

    @xietao0221 thx :)


  • 0
    X

    @cyqz so clesr, very useful~


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.