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

实习冲刺第二十二天

112.路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。

思路详解:本题仍然使用递归方法求解,想要知道有没有值符合要求我们可以一直计算targetsum-root->val 最后到根节点如果等于0说明有符合要求的路径,否则没有。

代码详解:

class Solution {
public:
    bool hasPathSum(TreeNode* root, int targetSum) {
        if(root==nullptr)//如果根节点为空直接返回false
        {
            return false;
        }
        if(root->left==nullptr&&root->right==nullptr)//如果只有根节点那么判断以下根节点和目标值是否相同
        {
            return root->val==targetSum;
        }
        return hasPathSum(root->left,targetSum-root->val)||hasPathSum(root->right,targetSum-root->val);//顺次递归逐层判断是否有值能满足目标值减去当前值
    }
};

面经:

  1. 什么是c++中的常量表达式,有什么作用,如何判断是不是常量表达式

常量表达式是指在编译时就能确定其值的表达式。这样的表达式可以用于需要常量值的上下文中,例如数组的大小、枚举值、位域的大小以及非类型模板参数等。

下面是一些常量表达式

5            // 整数字面量
3.14         // 浮点数字面量
'a'          // 字符字面量
"Hello"      // 字符串字面量(注意:字符串字面量在C++中不是常量表达式,因为它是一个指针常量,指向字符数组)
true         // 布尔字面量
nullptr      // 空指针字面量
1 + 2        // 使用运算符的表达式,只要操作数都是常量表达式
enum {size = 10}; size // 枚举值

常量表达式有以下作用:

  • 定义数组的容量:在C++中,数组的容量必须是一个常量表达式。例如,int array[10]; 中的 10 就是一个常量表达式。
  • 指定枚举值:枚举类型的值可以在定义时使用常量表达式来初始化。
  • 模板的非类型参数:模板的非类型参数必须是一个常量表达式。例如,template<int N> class Array {...}; 中的 N 必须是一个常量表达式。
  • case语句中的标签:在switch语句中,case标签必须是一个常量表达式。
  • 位域的大小:在结构体或联合体中定义位域时,位域的大小必须是一个常量表达式。
  • 静态断言:C++11引入的静态断言 static_assert 的第二个参数必须是一个常量表达式。

判断一个表达式是否是常量表达式,可以遵循以下准则:

  • 字面量:所有的字面量(如数字、字符、字符串字面量)都是常量表达式。
  • 枚举常量:枚举类型的常量也是常量表达式。
  • const变量:如果 const 变量的值在编译时就能确定,并且它的类型是基本数据类型或枚举类型,那么它就是一个常量表达式。
  • 运算符:如果运算符的操作数都是常量表达式,那么该运算符的结果也是常量表达式。

http://www.kler.cn/a/395871.html

相关文章:

  • 「AI Infra 软件开源不是一个选项,而是必然」丨云边端架构和 AI Infra专场回顾@RTE2024
  • 24.11.13 机器学习 特征降维(主成份分析) KNN算法 交叉验证(K-Fold) 超参数搜索
  • 使用c#实现TCP客户端与服务器端
  • ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic
  • MySQL —— MySQL逻辑架构与查询过程
  • Linux——GPIO输入输出裸机实验
  • MySQL如何解决幻读?
  • 15分钟学 Go 第 54 天 :项目总结与经验分享
  • 基于微信小程序的药店管理系统+LW示例参考
  • 一道C语言关于距离的期末题及答案
  • 自然推理系统:的拒取式的解析
  • 数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)
  • 想要成为独立游戏作者 :通关!游戏设计之道 2-2 关卡设计
  • Unity图形学之Shader2.0 深度测试
  • 双指针优质算法题集
  • 基于STM32的智能语音识别饮水机系统设计
  • Ajax异步调用
  • css 溢出隐藏显示省略号
  • 地质旅游平台推动“旅游+地质”融合发展
  • Spring学习笔记_34——@Controller
  • 协方差矩阵及其计算方法
  • 动态规划 之 子数组 算法专题
  • Ceph 中PG与PGP的概述
  • Algen的跨链互操作性:增强区块链连接性
  • CSS Module:告别类名冲突,拥抱模块化样式(5)
  • 如何使用 WebAssembly 扩展后端应用