• 2023-09-21力扣每日一题


    链接:

    2603. 收集树中金币

    题意

    一个无向无根树,每个点上有Coins[T]个金币,每次你可以选择吸收离自己距离小于等于2的节点的所有金币,也可以移动到相邻格子上,求全部吸完最小的移动次数(任选起点,但吸完要返回起点)

    由于计算的是移动次数,所以你可以认为一直在吸,走到哪儿吸到哪儿

    计算最后移动次数很简单,由于要回到起点,所以移动次数一定是(n-1)*2-当n>0时,因为两个点之间要经过两次(来回且无环)

    根据度,我们可以移除两次,度为0和1的节点,这些节点的特点是可以看做叶子节点,由于我们可以直接吸距离2的所有金币,所以我们在父节点不需要向下移动,就可以处理掉这些叶子结点。要注意的是,做这一步时,要等所有叶子结点都挑出来以后再更新度,以免提前计算将要成为叶子节点的节点

    同时要记得先把所有没金币的叶子节点去掉,这边要注意和上面不同的是,即时更新度,要把新的叶子结点中没金币的也去掉(我偷懒了,大循环了)

    实际代码:

    #include
    using namespace std;
    int collectTheCoins(vector& coins, vector>& edges)
    {
        int lg=coins.size();
    	if(lg<=5) return 0;
    		
        vector>Map(lg);
        vectorbook(lg);
        
        //边结构 
        for(auto edge:edges)
        {
        	//if(coins[edge[0]]==0 || coins[edge[1]]==0) continue;
        	Map[edge[0]].push_back(edge[1]);
        	Map[edge[1]].push_back(edge[0]);
    	}
    	
    
    	while(true)
    	{
    		bool kill=0;
    		for(int j=0;jTrue;
    		for(int j=0;j
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    限制:

    • n == coins.length
    • 1 <= n <= 3 * 104
    • 0 <= coins[i] <= 1
    • edges.length == n - 1
    • edges[i].length == 2
    • 0 <= ai, bi < n
    • ai != bi
    • edges 表示一棵合法的树。
  • 相关阅读:
    【01背包问题】
    JavaScript 任务池
    LeaRun.net快速开发动态表单
    08_一句话让你人间清醒
    每日一题(day10)
    Maven项目在pom.xml里配置远程仓库
    Java时间复杂度和空间复杂度(详解)
    基础的语法
    Postman自动化接口测试
    基于H5的旅游攻略平台设计与实现
  • 原文地址:https://blog.csdn.net/Fei_WuYan/article/details/133157810