leetcode Minimum Height Trees

题目链接

这个题有点难度。。
使用的是类似拓扑排序方法。可以逐步的剔除掉树里面的叶子节点。然后,剩下树种仅有叶子节点。那么这两个就是最后的结果。

思考的方式就是。我们是从顶端到根的距离最小。那么。我们每次都去掉一层叶子,这样问题没边,还是要从根节点到叶子的最短距离。那么留下来的就可以递归执行去叶子了。

public class Solution {
    public List<Integer> findMinHeightTrees(int n, int[][] edges) {
        if(n==1)
        {
            List<Integer> li=new LinkedList();
            li.add(0);
            return li;
        }
         ArrayList<Set<Integer>> graph=new ArrayList<>(n);
        for(int i=0;i<n;i++)
        {
            graph.add(new HashSet<Integer>());
        }
        for(int[] arr:edges)
        {
            Set<Integer> eSet=null;
            eSet=graph.get(arr[0]);
            if(eSet==null)
            {
                eSet=new HashSet<Integer>();
                graph.set(arr[0], eSet);
            }
            eSet.add(arr[1]);

            eSet=graph.get(arr[1]);
            if(eSet==null)
            {
                eSet=new HashSet<Integer>();
                graph.set(arr[1], eSet);
            }
            eSet.add(arr[0]);
        }


        LinkedList<Integer> leafs=new LinkedList<>();
        for(int i=0;i<graph.size();i++)
        {
            if(graph.get(i).size()==1)
            {
                leafs.add(i);
            }
        }

        while(true)
        {
            LinkedList<Integer> newleafs=new LinkedList<>();
            for(Integer i:leafs)
            {
                Set<Integer> set=graph.get(i);
                for (Integer integer : set) {
                    Set<Integer> set2= graph.get(integer);
                    set2.remove(i);
                    if(set2.size()==1)
                    {
                        newleafs.add(integer);
                    }

                }
            }
            if(newleafs.size()==0)
            {
                return leafs;
            }
            leafs=newleafs;
        }
    }
}
内容概要:本文介绍了一个基于Google Earth Engine(GEE)平台的JavaScript函数库,主要用于时间序列数据的优化与子采样处理。核心函数包括de_optim,采用差分进化算法对时间序列模型进行参数优化,支持自定义目标函数、变量边界及多种变异策略,并可返回最优参数或收敛过程的“陡度图”(scree image);sub_sample函数则用于按时间密度对影像集合进行三种方式的子采样(批量、分段打乱、跳跃式),以减少数据量同时保留时序特征;配套函数ts_image_to_coll可将子采样后的数组图像还原为标准影像集合,apply_model可用于将优化所得模型应用于原始时间序列生成预测结果。整个工具链适用于遥感时间序列建模前的数据预处理与参数调优。; 适合人群:具备Earth Engine基础开发经验、熟悉JavaScript语法并从事遥感数据分析、生态建模等相关领域的科研人员或技术人员;有时间序列建模需求且希望自动化参数优化流程的用户。; 使用场景及目标:①在有限观测条件下优化非线性时间序列拟合模型(如物候模型)的参数;②压缩大规模时间序列数据集以提升计算效率;③实现模型验证与交叉验证所需的时间序列子集抽样;④构建端到端的遥感时间序列分析流水线。; 阅读建议:此资源为功能性代码模块,建议结合具体应用场景在GEE平台上实际调试运行,重点关注各函数的输入格式要求(如band命名、image属性设置)和异常处理机制,确保输入数据符合规范以避免运行错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值