当前位置:网站首页>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]));
}
}
边栏推荐
- 74-这类SQL优化,oracle输给了mysql,如何补救?
- 53 page intelligent campus intelligent system design scheme (download attached)
- pytorch的模型保存加载和继续训练
- 53页智慧校园智能化系统设计方案(附下载)
- 百家讲坛 大秦崛起(下部)
- 88-被广为流传的参数优化, 是蜜糖还是毒药?
- R language airpassengers dataset visualization
- 【OR36 链表的回文结构】
- 70-根因分析-oracle数据库突发性能问题,谁来背这个锅
- Notes d'apprentissage de golang - structure
猜你喜欢

The road to systematic construction of geek planet business monitoring and alarm system

极客星球 | 业务监控及告警系统体系化建设之路

Résolu: peut - on avoir plus d'une colonne auto - incrémentale dans un tableau

【OR36 链表的回文结构】

SwiftUI如何模拟视图发光增大的动画效果

The access succeeds but an exception is thrown: could not find acceptable representation

【138. 复制带随机指针的链表】

Easydss problem and solution summary
MySQL中如何计算同比和环比

Alibaba cloud video on demand playback error, console access code:4400
随机推荐
Emotion analysis with RNN & CNN pytorch
Unityeditor editor script execution menu
Introduction to JWT
R language organdata dataset visualization
Lora technology -- Lora signal changes from data to Lora spread spectrum signal, and then from RF signal to data through demodulation
R language usarrests dataset visualization
农产品期货开户
91-oracle普通表改分区表的几种方法
Using qtest for data set test performance test GUI test
Visualization of R language nutrient dataset
A Dynamic Near-Optimal Algorithm for Online Linear Programming
Ribbon负载均衡
NumPy学习笔记(六)——sum()函数
启牛送的券商账户是安全的吗?启牛提供的券商账户是真的?
[observation] innovation in the software industry has entered a "new cycle". How can we make a new start in the changing situation?
让知识付费系统视频支持M3U8格式播放的方法
How to realize @ person function in IM instant messaging
Alibaba cloud video on demand playback error, console access code:4400
EasyClick更新图库
Notes d'apprentissage de golang - structure