【LeetCode】打家劫舍III

【LeetCode】打家劫舍III

【LeetCode】打家劫舍III

💐The Begin💐点点关注,收藏不迷路💐

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。

除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。

给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。

示例 1:

在这里插入图片描述

输入: root = [3,2,3,null,3,null,1]
输出: 7
解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7

示例 2:

在这里插入图片描述

输入: root = [3,4,5,1,3,null,1]
输出: 9
解释: 小偷一晚能够盗取的最高金额 4 + 5 = 9

提示:

树的节点数在 [1, 10^4] 范围内
0 <= Node.val <= 10^4

#include<stdio.h>#include<stdlib.h>// 定义二叉树的节点结构体structTreeNode{int val;structTreeNode*left;structTreeNode*right;};// 创建新的节点structTreeNode*newNode(int val){structTreeNode* node =(structTreeNode*)malloc(sizeof(structTreeNode)); node->val = val; node->left =NULL; node->right =NULL;return node;}// 辅助函数,计算打劫或不打劫当前节点能获得的最大金额inthelper(structTreeNode* root,int* robThisNode,int* notRobThisNode){if(root ==NULL){*robThisNode =0;*notRobThisNode =0;return0;}int leftRob, leftNotRob;int rightRob, rightNotRob;// 递归计算左子树打劫和不打劫的最大金额helper(root->left,&leftRob,&leftNotRob);// 递归计算右子树打劫和不打劫的最大金额helper(root->right,&rightRob,&rightNotRob);// 如果打劫当前节点,则不能打劫左右子节点*robThisNode = root->val + leftNotRob + rightNotRob;// 如果不打劫当前节点,则可以打劫或不打劫左右子节点,取最大值*notRobThisNode =(leftRob > leftNotRob? leftRob : leftNotRob)+(rightRob > rightNotRob? rightRob : rightNotRob);// 返回两种情况的最大值return(*robThisNode >*notRobThisNode?*robThisNode :*notRobThisNode);}// 主函数,计算打劫二叉树能获得的最大金额introb(structTreeNode* root){int robThisNode, notRobThisNode;returnhelper(root,&robThisNode,&notRobThisNode);}
在这里插入图片描述

💐The End💐点点关注,收藏不迷路💐

Read more

这回真的“装”到了!来OpenClaw全国纵深行,你只需要带一台电脑……

这回真的“装”到了!来OpenClaw全国纵深行,你只需要带一台电脑……

AI Agent 的风,已经从 GitHub 吹到了线下。 过去几个月,越来越多开发者开始讨论一个问题: 当 AI 不再只是聊天,而是可以执行任务,软件会变成什么样? 在这股浪潮中,一个开源项目迅速进入开发者视野——OpenClaw,在 GitHub 上获得大量关注,相关教程、实践案例不断出现。有人用它自动整理资料,有人用它管理开发流程,还有人尝试让它执行复杂的工作流。 很多开发者第一次意识到: AI 不只是工具,它可能成为“执行者”。 不过,在技术社区之外,大多数人对 Agent 的理解仍停留在概念层面。 * AI Agent 到底是什么? * 如何在自己的电脑上运行? * 普通开发者能否真正用起来? 带着这些问题,一场围绕 OpenClaw 的开发者城市行动正在展开。 ZEEKLOG 发起的OpenClaw 全国纵深行将走进 20 个城市,用最直接的方式回答一个问题——如果

By Ne0inhk
MySQL 服务器配置与管理

MySQL 服务器配置与管理

MySQL 服务器简介 MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务 服务器配置和默认值 mysqld 有很多选项和系统变量可以在启动时进⾏配置 查看所有mysqld 选项和可配置的系统变量列表及默认值 mysqld --verbose --help 查看服务器在运⾏时系统变量的值,连接到MySQL并执⾏以下语句 SHOW VARIABLES; 查看服务器在运⾏时的⼀些统计和状态指⽰器 SHOW STATUS; 注意:系统变量、状态变量的作⽤域分为: Global (全局), Session (当前会话或连接), 或 两者都⽀持 系统变量和选项 当通过mysqld启动数据库服务器时,可以通过选项⽂件或命令⾏中提供选项,但是,在⼤多数情况下,为确保服务器每次运⾏时都使⽤相同的选项,

By Ne0inhk

Spring AI实现RAG(检索增强生成)详解与实践

Spring AI实现RAG(检索增强生成)详解与实践 一、什么是RAG? RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索和文本生成的技术。它通过从外部知识库中检索相关信息,然后将这些信息作为上下文提供给生成模型,从而生成更准确、更相关的回答。 RAG的核心原理 1. 检索(Retrieval):从知识库中检索与查询相关的文档片段 2. 增强(Augmentation):将检索到的信息作为上下文增强提示 3. 生成(Generation):基于增强后的提示生成最终回答 RAG的优势 * 知识更新:无需重新训练模型即可更新知识 * 准确性:基于实际文档生成,减少幻觉问题 * 可追溯性:可以追溯到信息来源 * 成本效益:比微调模型更经济 二、Spring AI中的RAG支持 Spring AI提供了完整的RAG实现框架,包括: * 向量存储:支持多种向量数据库 * 文档加载:支持多种文件格式 * 文本分割:智能文档分块

By Ne0inhk
【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析

【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,ZEEKLOG全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Rust开发,Python全栈,Golang开发,云原生开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。 所属的专栏:Rust高性能并发编程 景天的主页:景天科技苑 文章目录 * Rust线程池 * rayon 线程池 * 一、Rayon核心API详解 * 1.1 常用方法 * 1.2 常见并行组合子(Combinators) * 1.

By Ne0inhk