Java Leetcode每日一题:暴力

        需求:你有一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和直系下属的id。

        给定一个员工数组employees,其中:
        employees[i].id是第i个员工的ID。
        employees[i].importance 是第i个员工的重要度。
        employees[i].subordinates是第i名员工的直接下属的ID列表。
        给定一个整数id表示一个员工的ID,返回这个员工和他所有下属的重要度的总和。

        纯暴力方法,通过遍历目标员工的每一个下属实现。

package LeetcodeExercise220240826;

import LeetcodeExercise120240826.Employee;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class LeetcodeExercise2 {
    public static void main(String[] args) {
//         需求:你有一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和直系下属的id。
//         给定一个员工数组employees,其中:
//         employees[i].id是第i个员工的ID。
//         employees[i].importance 是第i个员工的重要度。
//         employees[i].subordinates是第i名员工的直接下属的ID列表。
//         给定一个整数id表示一个员工的ID,返回这个员工和他所有下属的重要度的总和。

        List<Integer> employee1List = new ArrayList<>();
        Collections.addAll(employee1List, 2,3);
        Employee employee1 = new Employee(1, 5, employee1List);
        List<Integer> employee2List = new ArrayList<>();
        Employee employee2 = new Employee(2, 3, employee2List);
        List<Integer> employee3List = new ArrayList<>();
        Employee employee3 = new Employee(3, 3, employee3List);
        List<Employee> employees = new ArrayList<>();
        Collections.addAll(employees, employee1, employee2, employee3);
        Solution solution = new Solution();
        int value = solution.getImportance(employees, 1);
        System.out.println(value);
    }
}

class Solution {
    public int getImportance(List<Employee> employees, int id) {
        int value = 0;
        return takevalue(employees, id, value);
    }

    public int takevalue(List<Employee> employees, int id, int value) {
        List<Integer> subordinate = null;
        for (Employee employee : employees) {
            if (employee.id == id) {
                value += employee.importance;
                subordinate = employee.subordinates;
            }
        }

        if (subordinate == null) {
            return value;
        }

        for (int subordinateID : subordinate) {
            value = takevalue(employees, subordinateID, value);
        }

        return value;
    }
}

        Employee类

package LeetcodeExercise120240826;

import java.util.List;

public class Employee {
    public int id;
    public int importance;
    public List<Integer> subordinates;

    public Employee(int id, int importance, List<Integer> subordinates) {
        this.id = id;
        this.importance = importance;
        this.subordinates = subordinates;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getImportance() {
        return importance;
    }

    public void setImportance(int importance) {
        this.importance = importance;
    }

    public List<Integer> getSubordinates() {
        return subordinates;
    }

    public void setSubordinates(List<Integer> subordinates) {
        this.subordinates = subordinates;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值