当前位置:网站首页>513. 找树左下角的值 / 剑指 Offer II 091. 粉刷房子
513. 找树左下角的值 / 剑指 Offer II 091. 粉刷房子
2022-06-22 19:43:00 【彼淇梁】
513. 找树左下角的值【中等题】【每日一题】
思路:【BFS】
BFS模板题,见代码注释。
代码:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */
class Solution {
public int findBottomLeftValue(TreeNode root) {
//定义一个队列来存储节点
Queue<TreeNode> queue = new ArrayDeque<>();
//首先将根节点加入队列
queue.offer(root);
//定义当前层的最左侧节点值,初始状态当前层只有一个根节点,因此ans初始化为根节点的值
int ans = root.val;
//当队列不为空时,遍历二叉树的每一层节点
while (!queue.isEmpty()){
//先求出当前队列的大小,即当前层的节点数
int size = queue.size();
//更新ans为当前层的最左侧节点值
ans = queue.peek().val;
//依次取出当前层的所有节点
for (int i = 0; i < size; i++) {
//取出队列头部节点
TreeNode node = queue.poll();
//如果头部节点有左子节点,就将左子节点添加到队列尾部
if (node.left != null){
queue.offer(node.left);
}
//如果头部节点有右子节点,就将右子节点添加到队列尾部
if (node.right != null){
queue.offer(node.right);
}
}
}
//二叉树层序遍历结束时,ans即为最后一层的最左侧节点值
return ans;
}
}
剑指 Offer II 091. 粉刷房子【中等题】
思路:【动态规划】
求出每个房子对应的每个颜色的动态转移方程,使用三阶dp数组存储。
最后将第n-1号房子的三个颜色的最小花费的最小值返回即可。
代码:
class Solution {
public int minCost(int[][] costs) {
int n = costs.length;
//定义三阶dp数组存储每个房子刷不同颜色需要的花费
int[][] dp = new int[n][3];
//初始化dp[0]
//第0号房子刷0号颜色的最小花费就是cost[0][0]
dp[0][0] = costs[0][0];
//第0号房子刷1号颜色的最小花费就是cost[0][1]
dp[0][1] = costs[0][1];
//第0号房子刷2号颜色的最小花费就是cost[0][2]
dp[0][2] = costs[0][2];
//从第1号房子开始遍历,根据动态转移方程来求出每个房子刷不同颜色的花费
for (int i = 1; i < n; i++) {
//第i号房子刷0号颜色的最小花费为 第i-1号房子刷1号颜色和刷2号颜色的最小花费加上第i号房子刷0号颜色的成本
dp[i][0] = Math.min(dp[i-1][1],dp[i-1][2]) + costs[i][0];
//第i号房子刷1号颜色的最小花费为 第i-1号房子刷0号颜色和刷2号颜色的最小花费加上第i号房子刷1号颜色的成本
dp[i][1] = Math.min(dp[i-1][0],dp[i-1][2]) + costs[i][1];
//第i号房子刷2号颜色的最小花费为 第i-1号房子刷0号颜色和刷1号颜色的最小花费加上第i号房子刷2号颜色的成本
dp[i][2] = Math.min(dp[i-1][0],dp[i-1][1]) + costs[i][2];
}
//最后返回最后一个房子 即第n-1号房子刷0、1、2号房子的最小花费的最小值
return Math.min(dp[n-1][0],Math.min(dp[n-1][1],dp[n-1][2]));
}
}
边栏推荐
猜你喜欢

让知识付费系统视频支持M3U8格式播放的方法

Raspberry pie environment settings

已解决:一個錶中可以有多個自增列嗎

【文末送书】火遍全网的AI给老照片上色,这里有一份详细教程!

R语言 co2数据集 可视化
mysql8.0忘记密码的详细解决方法
Gradle Build Cache引发的Task缓存编译问题

53 page intelligent campus intelligent system design scheme (download attached)

Ultrafast transformers | redesign vit with res2net idea and dynamic kernel size, surpassing mobilevit

R语言organdata 数据集可视化
随机推荐
Visualization of wine datasets in R language
底部菜单添加的链接无法跳转到二级页面的问题
Kotlin1.6.20新功能Context Receivers使用技巧揭秘
【OR36 链表的回文结构】
百家讲坛 雍正十三年(下部)
【剑指Offer】面试题44.数字序列中的某一位数字
苹果CoreFoundation源代码
Can financial products be redeemed on weekends?
The real king of cache
How to calculate the Gini coefficient in R (with examples)
NBA季后赛对阵图
Container container runtime (2): which is better for you, yum installation or binary installation?
75-当left join遇到子查询
Easydss problem and solution summary
Pytorch's model saving, loading and continuing training
R 语言 wine 数据集可视化
访问成功但抛出异常:Could not find acceptable representation
评估指标及代码实现(NDCG)
R 语言 UniversalBank.csv“ 数据分析
win10安装.net3.5.docx