dp算法练习题【8】

news2024/9/21 22:58:58

不同二叉搜索树

96. 不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1
class Solution {
    public int numTrees(int n) {
        int[] dp = new int[n + 1];
        dp[0] = 1;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                // 左树种类 * 右树种类
                dp[i] += dp[j - 1] * dp[i - j];
            }
        }
        return dp[n];
    }
}

不同二叉树Ⅱ

95. 不同的二叉搜索树 II

给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。

示例 1:

输入:n = 3
输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]

示例 2:

输入:n = 1
输出:[[1]]

class Solution {
 public List<TreeNode> generateTrees(int n) {
        return dfs(1, n);
    }
    List<TreeNode> dfs(int l, int r) {
        if (l > r) return new ArrayList<>(){{add(null);}};
        List<TreeNode> ans = new ArrayList<>();
        for (int i = l; i <= r; i++) {
            for (TreeNode x : dfs(l, i - 1)) {
                for (TreeNode y : dfs(i + 1, r)) {
                    TreeNode root = new TreeNode(i);
                    root.left = x; root.right = y;
                    ans.add(root);
                }
            }
        }
        return ans;
    }
}

二叉树中的最大路径和

124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和 。

示例 1:

输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

class Solution {
    int maxSum = Integer.MIN_VALUE; 
    
    public int maxPathSum(TreeNode root) {
        maxGain(root);
        return maxSum;
    }
    
    private int maxGain(TreeNode node) {
        if (node == null) return 0;
        
        int leftGain = Math.max(maxGain(node.left), 0);
        
        int rightGain = Math.max(maxGain(node.right), 0);
        
        int currentSum = node.val + leftGain + rightGain;
        
        maxSum = Math.max(maxSum, currentSum);
        
        return node.val + Math.max(leftGain, rightGain);
    }
}

每日一题

2181. 合并零之间的节点

给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。

对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。

 返回修改后链表的头节点 head 。

示例 1:

输入:head = [0,3,1,0,4,5,2,0]
输出:[4,11]
解释:
上图表示输入的链表。修改后的链表包含:
- 标记为绿色的节点之和:3 + 1 = 4
- 标记为红色的节点之和:4 + 5 + 2 = 11
/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeNodes(ListNode head) {
        ListNode dummy = new ListNode();
        ListNode tail = dummy;
        int total = 0;
        for (ListNode cur = head.next; cur != null; cur = cur.next) {
            if (cur.val == 0) {
                ListNode node = new ListNode(total);
                tail.next = node;
                tail = tail.next;
                total = 0;
            } else {
                total += cur.val;
            }
        }
        
        return dummy.next;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2117800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea控制台中文乱码问题解决方法(UTF-8 编码)

设置 IDEA 编码格式 打开 IntelliJ IDEA>File>Setting>Editor>File Encodings&#xff0c;将 Global Encoding、Project Encoding、Default encodeing for properties files 这三项都设置成 UTF-8 设置vm option 参数 将 vm option 参数改为&#xff1a; -Dfile.…

828华为云征文|部署全自动追番整理下载工具 AutoBangumi

828华为云征文&#xff5c;部署全自动追番整理下载工具 AutoBangumi 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 性能模式1.3 产品优势 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 AutoBangumi3.1 AutoBangumi 介绍3.2 Docker 环境搭…

构建数字生态,布局智能未来——驱动PCB行业新质生产力发展的引擎

2024年&#xff0c;PCB行业在全球经济复苏与新兴技术驱动的双重作用下&#xff0c;展现出强劲的发展势头。根据权威机构Prismark的预测&#xff0c;2024年全球PCB产值将同比增长5.0%&#xff0c;达到730.26亿美元。面对新兴技术的不断涌现和市场需求的快速变化&#xff0c;PCB行…

循环购模式!结合引流和复购于一体的商业模型!

欢迎各位朋友&#xff0c;我是你们的电商策略顾问吴军。今天&#xff0c;我将向大家介绍一种新颖的商业模式——循环购模式&#xff0c;它将如何改变我们的消费和收益方式。你是否好奇&#xff0c;为何商家会提供如此慷慨的优惠&#xff1f;消费一千元&#xff0c;不仅能够得到…

Adaptive Residual Interpolation for Color andMultispectral Image Demosaicking

Abstract: 摘要&#xff1a;拜耳滤色器阵列的彩色图像去马赛克是获取高质量彩色图像的重要图像处理操作。 最近&#xff0c;基于残差插值&#xff08;RI&#xff09;的算法已经证明了比传统的基于色差插值的算法更优越的去马赛克性能。 在本文中&#xff0c;我们提出了自适应残…

构建数字化工厂的智能制造-数字化智能制造(82页PPT下载)

方案介绍&#xff1a; 智能制造是指通过信息技术的应用&#xff0c;将传统制造业转变为基于数据和智能化决策的现代化制造方式。它以数字化技术为基础&#xff0c;实现了生产流程的数字化、信息化和自动化。智能制造不仅提升了生产效率和质量&#xff0c;还促进了资源的有效利…

开放式耳机对耳朵伤害大吗?超舒适开放式耳机推荐!

开放式耳机通常被认为对耳朵的伤害相对较小。这种耳机的设计不深入耳道&#xff0c;允许空气流通&#xff0c;减少了耳道内潮湿和细菌滋生的风险&#xff0c;同时也降低了因耳道封闭造成的不适和炎症可能性。开放式耳机的佩戴方式通常更为舒适&#xff0c;减少了对耳道的摩擦和…

基于组织图像预测基因表达

论文&#xff1a;Gene Expression Prediction from Histology Images via Hypergraph Neural Networks 代码&#xff1a;https://github.com/QSong-github/HGGEP 关键点&#xff1a; 开发了一种新颖的基于组织学图像的基因预测模型&#xff0c;命名为 HGGEP。该模型展示了卓越…

emlogpro插件-优雅的时间进度侧边栏小工具插件

插件介绍 最早是在wordpress建站看见的&#xff0c;一款非常优雅的时间进度小工具&#xff0c;为了方便emlog使用&#xff0c;集成了一个插件。 使用步骤 已经熟悉使用emlog的可以略过了 下载插件&#xff0c;后台激活使用 进入插件的设置页面可以进行这个时间进度小工具的…

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇&#xff1a;6.1.数据结构-c/c模拟实现堆上篇&#xff08;向下&#xff0c;上调整算法&#xff0c;建堆&#xff0c;增删数据&#xff09;-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问…

Java笔试面试题AI答之单元测试JUnit(3)

文章目录 13. 什么是注释以及它们如何在JUnit中有用&#xff1f;什么是注释&#xff08;Annotation&#xff09;&#xff1f;注释在JUnit中的用途 14. 解释如何测试”受保护”方法&#xff1f;1. 使用子类2. 同一包内直接测试3. 反射&#xff08;在支持的语言中&#xff09;4. …

解决移动端1px 边框优化的8个方法

前言 您是否注意到 1px 边框在移动设备上有时会显得比预期的要粗&#xff1f;这种不一致源于移动屏幕的像素密度不同。 在 Web 开发中&#xff0c;我们使用 CSS 来设置页面样式。但是&#xff0c;CSS 中的 1px 并不总是转换为设备上的物理 1px。这种差异就是我们的“1px 边框…

uniapp对tabbar封装,简单好用

第一种&#xff0c;效果展示 上代码&#xff0c;新建一个公用组件&#xff0c;tabbar.vue <template><view class"tabbar"><view class"tabbar-item" click"tabbarbtn(0)"><image class"item-image" v-if"…

什么是机器学习中的 Bagging?带有示例的指南

文章目录 一、说明二、理解集成学习2.1 什么是 Bagging&#xff1f;2.2 Bagging 与 Boosting2.3 套袋的优点 三、Python 中的 Bagging&#xff1a;简短教程3.1 数据集3.2 训练机器学习模型3.3 模型评估 四、装袋分类器4.1 评估集成模型4.2 最佳实践和技巧 五、结论 ​ 一、说明…

systrace/perfetto第三方app的Trace.beginSection方法无效问题和TAG开放剖析

背景 针对程序如何在自己的代码中加入相关的trace方法和TAG来方便在systrace/perfetto中进行查看&#xff0c;下面这篇文章已经进行了详细的讲解&#xff1a; systrace/perfetto中需要actrace打tag相关方法-车载车机framework系统开发实战 有针对native的c代码&#xff0c;也…

Java面试题总结-基础和框架-面试题一

1、TCP和UDP tcp 和 udp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输&#xff0c;而 udp 则常被用于让广播和细节控制交给应用的通信传输。 两者的区别大致如下&#xff1a; tcp 面向连接&#xff0c;udp 面向非连接即发送数据前不需要建立链接&#xff1b;tcp …

MQ-135空气质量传感器(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 mq135.h文件 mq135.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 MQ-135空气质量传感器属于MQ系列气体传感器&#xff0c;广泛用于检测有害气体、新鲜空气中的烟…

Vmware 傻瓜式安装( Linux 网络操作系统 01)

一、下载VMware虚拟机安装包 虚拟机下载链接&#xff1a;https://share.weiyun.com/4haPul0y ​ 二、安装 点击安装文件 ​ 点击下一步&#xff0c;勾选“我接受...条款"&#xff0c;继续点击下一步 修改更改安装位置&#xff0c;尽量不要安装到系统C盘&#xff1a; …

爆刷!LLM入门必备吴恩达新书-《面向开发者的LLM入门课程》

吴恩达联合OpenAI推出LLM现象级课程&#xff01;|||绝了||重磅首发&#x1f525; 1、LLM入门必看课程-吴恩达373 PDF||!适用于所有具备基础 Python 能力&#xff0c;想要入门 LLM 的学习者 2、由吴恩达老师与 OpenAI 联合推出的官方教程&#xff0c;面向入门 LLM 的开发者&…

[Linux入门]---进程替换

文章目录 1.进程替换原理2.进程替换函数2.1execl函数2.2execlp函数2.3execv函数2.4execvp函数2.5execle函数2.6execve函数2.7跨语言调用程序 3.总结 1.进程替换原理 一个程序替换的函数&#xff1a; #include <unistd.h> int execl(const char *path, const char *arg,…