package com.fishercoder.solutions;

import com.fishercoder.common.classes.NestedInteger;

import java.util.List;

public class _339 {
  public static class Solution1 {
    private int sum = 0;

    public int depthSum(List<NestedInteger> nestedList) {
      return dfs(nestedList, 1);
    }

    private int dfs(List<NestedInteger> nestedList, int depth) {
      for (NestedInteger ni : nestedList) {
        if (ni.isInteger()) {
          sum += depth * ni.getInteger();
        } else {
          dfs(ni.getList(), depth + 1);
        }
      }
      return sum;
    }
  }

  public static class Solution2 {
    public int depthSum(List<NestedInteger> nestedList) {
      return dfs(nestedList, 1);
    }

    private int dfs(List<NestedInteger> nestedList, int depth) {
      int sum = 0;
      for (NestedInteger ni : nestedList) {
        sum += ni.isInteger() ? depth * ni.getInteger() : dfs(ni.getList(), depth + 1);
      }
      return sum;
    }
  }
}

@@ -107,16 +107,526 @@
 .List;%0A%0A
+/**%0A * 339. Nested List Weight Sum%0A *%0A * Given a nested list of integers, return the sum of all integers in the list weighted by their depth.%0A * Each element is either an integer, or a list -- whose elements may also be integers or other lists.%0A *%0A * Example 1:%0A * Input: %5B%5B1,1%5D,2,%5B1,1%5D%5D%0A * Output: 10%0A * Explanation: Four 1's at depth 2, one 2 at depth 1.%0A *%0A * Example 2:%0A * Input: %5B1,%5B4,%5B6%5D%5D%5D%0A * Output: 27%0A * Explanation: One 1 at depth 1, one 4 at depth 2, and one 6 at depth 3; 1 + 4*2 + 6*3 = 27.%0A * */%0A
 public c

refactor 339