• 【leetcode】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:
    Given the list [[1,1],2,[1,1]], return 10. (four 1's at depth 2, one 2 at depth 1)

    Example 2:
    Given the list [1,[4,[6]]], return 27. (one 1 at depth 1, one 4 at depth 2, and one 6 at depth 3; 1 + 42 + 63 = 27)

    解析

    嵌套数组加权和
    给出一个数组,该数组的元素可能是一个数字,也可能是一个数组
    最外层数组权重是1,向内一层权重+1,
    求给出数组的权重和

    解题思路

    递归求和,第一层权重为1,判断该元素是int还是数组;若是数组,直接数字乘以权重;若是数组,递归调用方法,权重+1

    我的解法

    因为没有现成的数据结构,所以需要自己定义一个

    /**
     * 自定义嵌套数组
     * Created by Administrator on 2017/7/19.
     */
    public class NestedInteger {
        //包含一个整数
        private Integer integer;
        //以及一个数组
        private List<NestedInteger> nestedIntegers;
    
        //初始化Int
        public NestedInteger(Integer integer) {
            this.integer = integer;
        }
    
        //初始化数组
        public NestedInteger(List<NestedInteger> nestedIntegers) {
            this.nestedIntegers = nestedIntegers;
        }
    
        //判断是否int
        public Boolean isInteger() {
            if (integer != null && nestedIntegers == null) {
                return Boolean.TRUE;
            } else {
                return Boolean.FALSE;
            }
        }
    
        //判断是否数组
        public Boolean isNestedIntger() {
            if (integer == null && nestedIntegers != null) {
                return Boolean.TRUE;
            } else {
                return Boolean.FALSE;
            }
        }
    
        //Getter Setter
        public Integer getInteger() {
            return integer;
        }
    
        public void setInteger(Integer integer) {
            this.integer = integer;
            this.nestedIntegers = null;
        }
    
        public List<NestedInteger> getNestedIntegers() {
            return nestedIntegers;
        }
    
        public void setNestedIntegers(List<NestedInteger> nestedIntegers) {
            this.nestedIntegers = nestedIntegers;
            this.integer = null;
        }
    }
    
    

    然后再递归实现求和

    /**
     * 339. Nested List Weight Sum
     * 嵌套数组加权和
     */
    public class NestedListWeightSum {
        public static int getWeightSum(List<NestedInteger> nestedIntegers, int weight) {
            if (nestedIntegers == null || nestedIntegers.size() <= 0 || weight <= 0) {
                return 0;
            }
            int weightSum = 0;
            for (int i = 0; i < nestedIntegers.size(); i++) {
                if (nestedIntegers.get(i) != null && nestedIntegers.get(i).isInteger()) {
                    weightSum += nestedIntegers.get(i).getInteger() * weight;
                } else {
                    weightSum += getWeightSum(nestedIntegers.get(i).getNestedIntegers(), weight + 1);
                }
            }
            return weightSum;
        }
    }
    
  • 相关阅读:
    CARLA——The External Sensor Interface (ESI)
    Eventbased Vision meets Deep Learning on Steering Prediction for Selfdriving Cars
    DDD20 EndtoEnd Event Camera Driving Dataset: Fusing Frames and Events with Deep Learning for Improved Steering Prediction
    CARLA——Core implementations: synchrony, snapshots and landmarks
    Generative Adversarial Imitation Learning
    EventBased Vision Enhanced: A Joint Detection Framework in Autonomous Driving
    CARLA——Sensors in CARLA
    Imitation Learning via OffPolicy Distribution Matching
    CARLA入门
    颜色
  • 原文地址:https://www.cnblogs.com/shanelau/p/7203689.html
Copyright © 2020-2023  润新知