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

实习冲刺Day15

算法题

对称二叉树

101. 对称二叉树 - 力扣(LeetCode)

对称的含义:

完全相同

不对称的情况:左右子树层数不同

左右子树数值不同

/**
 * 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:
    bool fun(TreeNode* p, TreeNode* q) {
        if (!p && !q)//左右两边同时为空的时候,证明二叉树左右两方都遍历结束了,返回true
            return true;
        if (!p || !q)//只要有一个为空了,那就是不对称
            return false;
        if (p->val != q->val)//数值不相等,也是不对称
            return false;
        bool l = fun(p->left, q->right);//遍历左子树的左子树,又子树的右子树
        bool r = fun(p->right, q->left);//右边
        return l && r;
    }
    bool isSymmetric(TreeNode* root) { 
        return fun(root->left, root->right); 
    }
};

基础知识

请解释new和malloc的区别,并分别解释他们的用法

new是运算符在c++中支持运算符重载,malloc是库函数,不支持函数重载

new的返回值不需要强转,malloc的返回值是void*类型的,需要强转

new申请空间失败会抛出异常,malloc申请失败会返回为空

new申请空间不用填具体大小,malloc需要详细具体申请多大空间

new出的空间需要delete释放,malloc申请玩的空间需要free释放

使用new操作符来分配对象内存时会经历三个步骤:

调用operator new 函数(对于数组是operator new[])分配一块足够的内存空间(通常底层默认使用malloc实现,除非程序员重载new符号)以便存储特定类型的对象;

malloc分配失败会导致什么问题

  1. 程序异常终止 :在很多情况下,如果程序没有对malloc失败进行妥善处理,当malloc无法分配所需内存时,它可能会返回NULL指针。后续若程序继续尝试对这个NULL指针进行解引用操作(例如向其写入数据或读取数据),就会导致程序崩溃。这种崩溃可能表现为段错误,因为程序试图访问非法的内存地址。
  2. 内存泄漏 :如果部分内存分配失败,但之前已经分配的用于管理这个数据结构的内存没有被释放,那么这部分内存就会一直被占用,直到程序结束,降低了内存的利用率。

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

相关文章:

  • ElasticNet Regressor(弹性网络回归) --- 论文实战
  • pandas——对齐运算+函数应用
  • 优选算法第五讲:位运算模块
  • Rust 构建 TCP/UDP 网络服务
  • Centos 7系统一键安装宝塔教程
  • 黑马官网2024最新前端就业课V8.5笔记---HTML篇
  • golang学习3
  • leetcode206. Reverse Linked List
  • 理解 Transformer 中的编码器-解码器注意力层(Encoder-Decoder Attention Layer)
  • 【测试语言篇一】Python进阶篇:内置容器数据类型
  • 24年配置CUDA12.4,Pytorch2.5.1,CUDAnn9.5运行环境
  • 【C++】踏上C++学习之旅(五):auto、范围for以及nullptr的精彩时刻(C++11)
  • 【LeetCode热题100】哈希表
  • 【大模型LLM面试合集】大语言模型架构_bert细节
  • [ DOS 命令基础 3 ] DOS 命令详解-文件操作相关命令
  • 三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库
  • 视图-数据库sqlserver
  • jmeter 性能测试步骤是什么?
  • 代码随想录训练营Day18 | 77. 组合 - 216.组合总和III - 17.电话号码的字母组合
  • Qml组件之Text
  • DGL库之dgl.function.u_mul_e(代替dgl.function.src_mul_edge)
  • 模拟实现strcat函数
  • 线程池核心参数有哪些
  • Vue 组件传递数据-Props(六)
  • Vue+Springboot 前后端分离项目如何部署?
  • 【FPGA】Verilog:理解德摩根第一定律: ( ̅A + ̅B) = ̅A x ̅B