• 1903. 部门统计(回顾)


    1903. 部门统计

    中文English

    公司给你提供了所有员工的信息,包括其ID,姓名和所属部门。
    以及他们之间的朋友关系,每个关系中由2个ID组成,如 "1, 2" 代表1号员工和2号员工是朋友。
    朋友关系不具有传递性,即BC都是A的朋友,但BC不一定是朋友。
    请计算每个部门中与其它部门的员工有朋友关系的员工个数。

    样例

    样例输入:
    employees = [
      "1, Bill, Engineer",
      "2, Joe, HR",
      "3, Sally, Engineer",
      "4, Richard, Business",
      "6, Tom, Engineer"
    ]
    
    friendships = [
      "1, 2",
      "1, 3",
      "3, 4"
    ]
    
    样例输出:
    "Engineer: 2 of 3"
    "HR: 1 of 1"
    "Business: 1 of 1"
    

    说明

    样例中,Engineer1号员工和HR2号员工是朋友关系,3号员工和Business4号员工是朋友关系,所以Engineer2个人和其它部门有朋友关系,输出"Engineer: 2 of 3“。

    注意事项

    所有的输入中逗号后都跟有一个空格,而且你的程序输出也要和样例格式相同。
    返回的列表对顺序没有要求。
    员工信息数量 N <= 50 条。
    朋友关系的数量 M <= 1000 条。
    员工ID都是100以内的数字。
    部门数 K <= 20。

    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param employees: information of the employees
        @param friendships: the friendships of employees
        @return: return the statistics
        """
        '''
        大致思路:
        1.初始化dic_fri = {},dic_num = {}, dic_emp = {}
        2.然后循环employees,根据','进行切割,根据最后一位来进行匹配,对应的职位放到dic_emp里面,num数量+1。而且dic_emp根据需要对应后面的职位
        3.循环friendships,对应dic_fri,在dic_emp里面进行职位的查找,进行+1
        4.最后根据dic_fri以及dic_num进行字符串拼接返回
        '''
        def departmentStatistics(self, employees, friendships):
            dic_fri = {}
            dic_num = {}
            dic_emp = {}
            for emp in employees:
                l_i = emp.split(',')
                if l_i[2].strip() not in dic_num:
                    dic_num[l_i[2].strip()] = 1
                    ##附带生成dic_fri
                    dic_fri[l_i[2].strip()] = 0
                else:
                    dic_num[l_i[2].strip()] += 1
                dic_emp[l_i[0].strip()] = l_i[2].strip()
            
    
            ##循环friendships,注意,如果一个员工和多个部门有朋友关系,也视为一个员工
            l = []
            for fri in friendships:
                l_j = fri.split(',')
                
                if dic_emp[l_j[0].strip()] != dic_emp[l_j[1].strip()]:
                    if l_j[0].strip() not in l:
                        dic_fri[dic_emp[l_j[0].strip()]] += 1
                        l.append(l_j[0].strip())
                    if l_j[1].strip() not in l:
                        dic_fri[dic_emp[l_j[1].strip()]] += 1
                        l.append(l_j[1].strip())
                
            #进行字符串拼接
            res = []
            for k,v in dic_fri.items():
                s = k + ': ' + str(v) + ' of ' + str(dic_num[k])
                res.append(s)
            return res
  • 相关阅读:
    python之 json里字典中的value去重
    matlab 中出现的错误 原因及解决办法
    利用matlab将二进制小数转换为十进制小数
    Git学习笔记
    关于升级OSX10.10 Yosemite后Matlab无法启动的解决办法
    编译macvim报错的macvim failed to build on 10.9 because of x11解决办法
    安装pydelicious遇到的一些问题
    用VerilogHDL编写的可调占空比的PWM波形设计
    精确了13倍是什么意思?
    知乎周刊之程序人生概要
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12772651.html
Copyright © 2020-2023  润新知