IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2021-11-28:有一棵树,给定头节点h,和结构数组m,下标0弃而不用。 比如h = 1 m = [ [] [23] [4] [56] [] [] []] -> 正文阅读

[数据结构与算法]2021-11-28:有一棵树,给定头节点h,和结构数组m,下标0弃而不用。 比如h = 1 m = [ [] [23] [4] [56] [] [] []]

2021-11-28:有一棵树,给定头节点h,和结构数组m,下标0弃而不用。
比如h = 1, m = [ [] , [2,3], [4], [5,6], [], [], []],
表示1的孩子是2、3; 2的孩子是4; 3的孩子是5、6; 4、5和6是叶节点,都不再有孩子,
每一个节点都有颜色,记录在c数组里,比如c[i] = 4, 表示节点i的颜色为4,
一开始只有叶节点是有权值的,记录在w数组里,
比如,如果一开始就有w[i] = 3, 表示节点i是叶节点、且权值是3。
现在规定非叶节点i的权值计算方式:
根据i的所有直接孩子来计算,假设i的所有直接孩子,颜色只有a,b,k。
w[i] = Max {
(颜色为a的所有孩子个数 + 颜色为a的孩子权值之和),
(颜色为b的所有孩子个数 + 颜色为b的孩子权值之和),
(颜色为k的所有孩子个数 + 颜色k的孩子权值之和)
}
请计算所有孩子的权值并返回。
来自美团。

答案2021-11-28:

这道题考的是语文。后序遍历。
当前来到h节点,
h的直接孩子,在哪呢?m[h] = {a,b,c,d,e},
每个节点的颜色在哪?比如i号节点,c[i]就是i号节点的颜色,
每个节点的权值在哪?比如i号节点,w[i]就是i号节点的权值,
void : 把w数组填满就是这个函数的目标。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
    h := 1
    m := [][]int{{}, {2, 3}, {4}, {5, 6}, {}, {}, {}}
    w := []int{0, 0, 0, 4, 5, 6, 0}
    c := []int{0, 0, 0, 4, 3, 2, 0}
    w0(h, m, w, c)
    fmt.Println(w)
    fmt.Println(c)
}
func w0(h int, m [][]int, w []int, c []int) {
    if len(m[h]) == 0 { // 叶节点
        return
    }
    // 有若干个直接孩子
    // 1 7个
    // 3 10个
    colors := make(map[int]int)
    // 1 20
    // 3 45
    weihts := make(map[int]int)
    for _, child := range m[h] {
        w0(child, m, w, c)
        colors[c[child]]++
        weihts[c[child]] += +w[c[child]]
    }
    for color, _ := range colors {
        w[h] = getMax(w[h], colors[color]+weihts[color])
    }
}

func getMax(a int, b int) int {
    if a > b {
        return a
    } else {
        return b
    }
}

执行结果如下:
图片


左神java代码

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:33:23  更:2021-11-29 16:35:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:46:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码