当前位置: 首页 > news >正文

力扣9.2

199.二叉树的右视图

题目

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

数据范围
  • 二叉树的节点个数的范围是 [0,100]
  • -100 <= Node.val <= 100
分析

树的层次遍历,每次返回那一层最边上的元素,可以使用两个deque实现

代码
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:deque<TreeNode*> tmp, ve;vector<int> res; void bfs(TreeNode* q) {ve.push_back(q);while(ve.size()) {tmp = ve;res.push_back(ve.back()->val);ve.clear();while(tmp.size()) {auto now = tmp.front();tmp.pop_front();auto l = now -> left, r = now -> right;if(l != nullptr) ve.push_back(l);if(r != nullptr) ve.push_back(r);}}}vector<int> rightSideView(TreeNode* root) {if(root == nullptr) return res;bfs(root);return res;}
};

637.二叉树的层平均值

题目

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

数据范围
  • 树中节点数量在[1, 104] 范围内
  • -2^31 <= Node.val <= 2^31 - 1
分析

使用两个vector实现树的层次遍历

代码
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<TreeNode*> tmp1, tmp2;vector<double> res;void bfs(TreeNode* p) {tmp2.push_back(p);while(tmp2.size()) {tmp1 = tmp2;tmp2.clear();double ave = 0;double cnt = 0;while(tmp1.size()) {auto now = tmp1.back();ave += now -> val;cnt += 1;tmp1.pop_back();auto l = now -> left, r = now -> right;if(l != nullptr) tmp2.push_back(l);if(r != nullptr) tmp2.push_back(r);}res.push_back(ave / cnt);}} vector<double> averageOfLevels(TreeNode* root) {bfs(root);return res;}
};

2110.股票平滑下跌阶段的数目

题目

给你一个整数数组 prices ,表示一支股票的历史每日股价,其中 prices[i] 是这支股票第 i 天的价格。

一个 平滑下降的阶段 定义为:对于 连续一天或者多天 ,每日股价都比 前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。

请你返回 平滑下降阶段 的数目。

数据范围
  • 1 <= prices.length <= 105
  • 1 <= prices[i] <= 105
分析

对于price[i],他对答案的贡献是他且在他前面的平滑下降的序列的长度,例如对于 874321这样的序列,当遍历到1时,他的贡献为4321321211四个,因此只要找到当前数所在的平滑下降的序列,计算贡献加入答案即可

代码
class Solution {
public:long long getDescentPeriods(vector<int>& prices) {long long res = 0;long long cnt = 0;for(int i = 0; i < prices.size(); i ++ ) {if(i && prices[i] != prices[i - 1] - 1) {cnt = 0;}res += ++ cnt;}return res;}
};

http://www.mrgr.cn/news/18325.html

相关文章:

  • ClickHouse
  • Matlab三维图的坐标轴标签 自动平行坐标/自动旋转
  • Mybatis【分页插件,缓存,一级缓存,二级缓存,常见缓存面试题】
  • HCIE认证要学多久?3个方面决定HCIE学习时长
  • 24数学建模国赛及提供助力(12——存贮论)!!!!
  • 算法训练营|图论第11天 Floyd算法 A*算法
  • jetson orin nx安装todesk
  • MySQL中的分组统计
  • 特殊字符合集(包括各种emoji表情、windows ASCII字符、自定义字母图案等)
  • 项目管理干系人管理
  • 【Transformer】基本概述
  • 《父母爱情》:找结婚对象,别只看有房有车有颜,这4个特点更重要!
  • NVIDIA H200与AMD MI300X:前者高利润率是否合理?
  • .NET周刊【9月第1期 2024-09-01】
  • c++ 标准模板库 STL
  • 一文彻底搞懂Spring, Spring MVC, Spring Boot 和 Spring Cloud 区别
  • Python数据抓取与质量校验:以杭州市公交线路为例
  • 【全能型AI“草莓”来袭】探索未来AI市场的多元化与边界
  • 简单的棒棒图绘制教程
  • 24 - 第三方库的使用支持