LeeCode 1125 并集最小组合

这篇具有很好参考价值的文章主要介绍了LeeCode 1125 并集最小组合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为项目经理,你规划了一份需求的技能清单 req_skills,并打算从备选人员名单 people 中选出些人组成一个「必要团队」( 编号为 i 的备选人员 people[i] 含有一份该备选人员掌握的技能列表)。

所谓「必要团队」,就是在这个团队中,对于所需求的技能列表 req_skills 中列出的每项技能,团队中至少有一名成员已经掌握。可以用每个人的编号来表示团队中的成员:

例如,团队 team = [0, 1, 3] 表示掌握技能分别为 people[0],people[1],和 people[3] 的备选人员。
请你返回 任一 规模最小的必要团队,团队成员用人员编号表示。你可以按 任意顺序 返回答案,题目数据保证答案存在。

LeeCode 1125 并集最小组合

public int[] smallestSufficientTeam1(String[] req_skills, List<List<String>> people) {

        //1、映射
        //需要0,1,2,3,4,5 项技能
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < req_skills.length; i++) {
            map.put(req_skills[i], i);
        }

        int havePeople = people.size();
        int havaSkill = req_skills.length;
        List<Integer>[] listDp = new List[1 << havaSkill];//listDp[i]表示完成i项技能所需的最少人数的集合
        listDp[0] = new ArrayList<>();//listDp[0] ,空的集合,表示只需要0个人完成

        //2、查看people[i]在dp[]贡献
        for (int i = 0; i < havePeople; i++) {

            int iHaveSkill = 0;//i people拥有的技能
            for (String skill : people.get(i)
            ) {
                iHaveSkill |= (1 << map.get(skill));
            }
            System.out.println("i:"+i);
            System.out.println("people.get(i).size():"+people.get(i).size()+" cur_skill:"+iHaveSkill);

            // newHaveSkill = ihaveSkill | j
            // dp[newHaveSkill] = min(dp[j] + 1,dp[newHaveSkill])

            for (int j = 0; j < listDp.length; j++) {
                if (listDp[j] == null)
                    continue;
                int newHaveSkill = j | iHaveSkill;
                if (listDp[newHaveSkill] == null || listDp[j].size() + 1 < listDp[newHaveSkill].size()){
                    listDp[newHaveSkill] = new ArrayList<>(listDp[j]);
                    listDp[newHaveSkill].add(i);
                }
            }
        }

//        System.out.println("listDp[listDp.length-1]:"+listDp.length);
        int len = listDp[(1 << havaSkill)-1].size();
        int[] res = new int[len];
        for (int i = 0; i < len;i++){
            res[i] = listDp[(1 << havaSkill)-1].get(i);
        }
        return res;

    }

思路解析:

1、集合A中共有0,1,2,3,4,5...元素

2、子集1拥有0,1,2 ;子集2拥有3,5;子集3拥有3, 4, 5

3、问题转化,最少合并子集个数,组合成集合A

4、子集组合【0/1】【0/1】【0/1】,选择当前集合或者不选择当前集合

最大不过是1 1 1,长度

问题求解:dp[8]中元素最少的个数

已知dp[pre] ,现有集合中拥有x个元素 ,dp[x|pre] 添加当前元素后的集合

dp[x|pre] = dp[pre] +1 或者不变文章来源地址https://www.toymoban.com/news/detail-411829.html

到了这里,关于LeeCode 1125 并集最小组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【赠书第5期】AI时代项目经理成长之道:ChatGPT让项目经理插上翅膀

    文章目录 前言 1 ChatGPT为项目经理带来便利 2 提供自动化的通知和提醒 3 提供数据分析和可视化 4 结论 5 推荐图书 6 粉丝福利 在现代商业环境中,项目经理需要具备高度的灵活性和响应能力。而现在,随着技术的不断提升和新工具的涌现,项目经理们也需要不断地提升自己的

    2024年02月05日
    浏览(35)
  • Rust每日一练(Leetday0026) 最小覆盖子串、组合、子集

    目录 76. 最小覆盖子串 Minimum Window Substring  🌟🌟🌟 77. 组合 Combinations  🌟🌟 78. 子集 Subsets  🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个字符串  s  、一个字符串  t  。返回 

    2024年02月09日
    浏览(33)
  • Java每日一练(20230516) 最小栈、组合总和II、相同的树

    目录 1. 最小栈  🌟 2. 组合总和 II  🌟🌟 3. 相同的树  🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 设计一个支持  push  , pop  , top  操作,并能在常数时间内检索到最小元素的栈。 push(x)  —— 将元素 x

    2024年02月05日
    浏览(26)
  • JAVA项目经理面试题

    JAVA项目经理面试题 1 你认为项目中最重要的是哪些过程? 分析、设计阶段(也可以加上测试,但千万别说编码或开发阶段),根据《人月神话》的观点:1/3 计划;1/6 编码;1/4 构件测试和早期系统测试;1/4 系统测试,所有的构件已完成。但根据国内目前的状况一般公司不会

    2023年04月08日
    浏览(28)
  • 【项目管理】AI时代项目经理必备技能

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 项目经理在AI时代仍然是非常关键的角色

    2024年02月08日
    浏览(28)
  • 项目经理岗面试常见问题

    一、注意事项   ·电面邀约确认(避免hr刷KPI): 请问贵司招聘的是什么岗位,是新建团队还是原有团队? 这边面试流程是怎样的,是 leader 直接面,还是?   ·面试前铺垫: 如果您对某部分感兴趣,请随时打断我。   ·面试中发挥: 尽量采用 STAR 原则回答,即 情境( Si

    2024年02月05日
    浏览(34)
  • 【晋升秘籍】高薪项目经理的成长指南

    近期,我身边一些入行 3-5年左右的项目经理朋友们开始迷茫了,纷纷找我取经。 随着 “金三银四”的到来,他们也想利用这个这个机会寻找更好的工作,但是接触的一些岗位都不是很适合,有一种高不成低不就的感觉,不知道未来的出路在哪里。 那些岗位要求要么是之前负

    2024年03月15日
    浏览(46)
  • 客户频繁变更需求,项目经理该如何应对?

    王博刚当上项目经理,接手了一个中型软件项目。公司高层多次提醒他要尊重客户需求,并充分满足客户的期望。 一开始项目进展顺利,但后来客户频繁变更需求给团队带来了很多额外工作。王博动员大家加班保证项目进度,让客户非常满意。 然而随着时间推移,需求变更

    2024年02月07日
    浏览(27)
  • PMP组织架构分类(强矩阵弱矩阵等)及项目经理权力与职能经理对比,一看必懂

    PMP组织架构中一般分类 :职能型,项目型,矩阵型(包括弱矩阵型、强矩阵型、平衡型矩阵)。 先重点来说说弱/强 矩阵型: 矩阵型划分强弱矩阵(事务急迫与难度): 弱矩阵: 一般为较简单或不紧急的项目 强矩阵: 一般为较复杂或较紧急的项目 平衡矩阵: 各方面都相对

    2024年02月06日
    浏览(43)
  • 项目经理跨部门沟通的6个原则

    大家好,我是老原。今天想和大家聊聊跨部门沟通。 你们在项目管理工作中,都是如何跨部门沟通,协调资源的? 项目经理80%的工作时间都是在沟通,一名优秀的项目经理,无疑是一个好的沟通者。 但不理解你的领导,配合度又低的团队成员,跨部门协调资源费劲……我一

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包