logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

贪心算法---监控二叉树

叶结点上不能放摄像头,在叶结点的父亲节点上开始放摄像头。0表示无覆盖,1表示有摄像头,2表示有覆盖。单层递归逻辑只需根据节点的左右孩子情况来设置节点的状态,保证两个孩子都能被监控。空节点的状态不能是无覆盖,又不能放摄像头,因此空姐点的状态为有覆盖。递归的终止条件应该是遇到空节点,返回2(有覆盖)。2.左右节点至少一个为无覆盖,则节点状态为有摄像头。3.左右节点至少一个为有摄像头,则节点状态为有覆盖

文章图片
#贪心算法#算法#数据结构
贪心算法---合并区间

思路:对数组按照元素的start数值升序排列,与前几题相似先判断区间是否重叠,不重叠的直接加入结果集,重叠的更新最大右边界(合并操作)。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

文章图片
#贪心算法#算法#数据结构
动态规划---打家劫舍(2)

思路:本题与上一题的区别在于本题是一个环,上一题就是普通数组。那么把环分成两部分处理,一个只考虑头不考虑尾,一个只考虑尾不考虑头,就把题目转换成上一题的情况了。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,给定一个代表每个房屋存放金额的非负整数数组,计算你。,今晚能够偷窃

文章图片
#动态规划#算法
动态规划---零钱兑换(2)

不可以,先遍历物品,再遍历背包容量,dp数组存储的是方案组合数;先遍历背包容量,再遍历物品,dp数组存储的就是方案排列数。01背包问题中内层倒序遍历保证了物品不会被重复加入,而本题为完全背包问题,物品可以多次取,因此采用正序。dp[j]就是所有的dp[j-coins[i]]相加,所以递归公式为dp[j]+=dp[j-coins[i]]dp[0]=1,可以理解为凑成金额为0的货币组合数为1。如果dp

文章图片
#动态规划#算法
贪心算法---不同路径

到达(i,j)位置可以从(i-1,j)向下走一步或者从(i,j-1)向右走一步。故dp[i][j]=dp[i-1][j]+dp[i][j-1]。1.确定dp数组及含义。dp数组需要是一个二维数组,dp[i][j]代表从起始位置到下标为(i,j)位置的不同路径条数。3.dp数组初始化。因为每一次只能向右或者向下走,所以第一行和第一列要初始化为1。机器人试图达到网格的右下角。问总共有多少条不同的路径?

文章图片
#贪心算法#算法#数据结构
到底了