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

华为OD刷题C卷 - 每日刷题32(执行任务赚积分,计算三叉搜索树的高度)

1、(执行任务赚积分):

这段代码是解决“执行任务赚积分”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算在有限的时间内,处理任务可以获得的最多积分。

main方法首先读取任务数量n和可用于处理任务的时间t,然后读取每个任务的最晚处理时间限制和积分值,存储在二维数组wos中。接着,调用getResult方法并打印出可获得的最多积分。

getResult方法首先按任务的最晚处理时间对任务进行升序排序。接着,使用一个ArrayList来维护在当前时间curTime内可以获得的积分列表。遍历所有任务,如果当前时间小于任务的最晚处理时间,则将任务积分添加到列表中,并更新当前时间。如果当前时间已经过了任务的最晚处理时间,则使用列表中的最小积分与当前任务积分进行比较,保留积分较高的任务。

最后,对列表进行排序并只保留最大的t个积分值,计算并返回这些积分值的总和。

2、(计算三叉搜索树的高度):

这段代码是解决“计算三叉搜索树的高度”的问题。它提供了一个Java类Main,其中包含main方法,以及两个内部类TreeNode和Tree,用于构建三叉搜索树并计算树的高度。

main方法首先读取要插入的数的数量n,然后读取这些数,使用Tree类的add方法将它们按规则插入三叉搜索树中。最后,打印出树的高度。

TreeNode内部类表示树的节点,包含节点值、高度以及指向左右中子树的引用。

Tree内部类包含根节点和树的高度。add方法实现了将新数按照给定规则插入三叉搜索树的逻辑。在插入过程中,同时更新节点的高度和树的当前最大高度。

package OD359;import com.sun.source.tree.Tree;import java.util.*;/*** @description 执行任务赚积分* @level 7* @score 100*//*** 题目描述* 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。* <p>* 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。* <p>* 可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。* <p>* 输入描述* 第一行为一个数 N,表示有 N 个任务* <p>* 1 ≤ N ≤ 100* 第二行为一个数 T,表示可用于处理任务的时间* <p>* 1 ≤ T ≤ 100* 接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。* <p>* 1 ≤ SLA ≤ 100* 0 ≤ V ≤ 100000* 输出描述* 可获得的最多积分*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//有n个任务int n = sc.nextInt();//用于处理任务的时间int t = sc.nextInt();//n个任务的 最晚处理时间 对应积分int[][] wos = new int[n][2];for (int i = 0; i < n; i++) {wos[i][0] = sc.nextInt();wos[i][1] = sc.nextInt();}//可获得的最多积分System.out.println(getResult(t, wos));}//再t时间内可获得的最多积分public static int getResult(int t, int[][] wos) {//按endTime升序排序Arrays.sort(wos, (a, b) -> a[0] - b[0]);//已获得的积分int value = 0;//当前时间int curTime = 0;//存放可能获得的积分ArrayList<Integer> list = new ArrayList<>();//遍历for (int[] wo : wos) {int endTime = wo[0];int score = wo[1];//当curTime<endTime 时,加入if (curTime < endTime) {list.add(score);value += score;curTime++;} else {//当curTime >= endTime时,用list总最小值与当前score比较,放入较大值//总是能存放最大的几个值list.sort((a, b) -> a - b);int min_score = list.get(0);if (score > min_score) {list.remove(0);list.add(score);value += score - min_score;}}}//升序排列list.sort((a, b) -> a - b);//只保留最大的t个值while (list.size() > t) {value -= list.remove(0);}return value;}}
package OD360;import java.util.Scanner;/*** @description 计算三叉搜索树的高度* @level 4* @score 100*/
/*** 题目描述* 定义构造三叉搜索树规则如下:* <p>* 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是:* <p>* 如果数小于节点的数减去500,则将数插入节点的左子树* 如果数大于节点的数加上500,则将数插入节点的右子树* 否则,将数插入节点的中子树* 给你一系列数,请按以上规则,按顺序将数插入树中,构建出一棵三叉搜索树,最后输出树的高度。* <p>* 输入描述* 第一行为一个数 N,表示有 N 个数,1 ≤ N ≤ 10000* <p>* 第二行为 N 个空格分隔的整数,每个数的范围为[1,10000]* <p>* 输出描述* 输出树的高度(根节点的高度为1)*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//可能有多行输入try-catchint n = sc.nextInt();Tree tree = new Tree();for (int i = 0; i < n; i++) {int val = sc.nextInt();tree.add(val);}System.out.println(tree.tree_height);}//定义树节点static class TreeNode {int val;//节点值int height;//节点高度TreeNode left;//左子树TreeNode mid;//中子树TreeNode right;//右子树//赋值构造方法public TreeNode(int val) {this.val = val;}}//定义三叉树 和添加节点的逻辑static class Tree {//根节点TreeNode root;//数的高度int tree_height;//add方法public void add(int val) {TreeNode node = new TreeNode(val);//如果没有根节点if (this.root == null) {node.height = 1;//根节点高度为1this.root = node;//temp定为root节点this.tree_height = 1;//目前数的高度为1} else {//已存在根节点,则用temp从根节点去逐层比较TreeNode cur = this.root;while (true) {//假设temp是当前cur节点的子节点node.height = cur.height + 1;//更新树的高度this.tree_height = Math.max(this.tree_height, node.height);//如果小于当前节点的数-500,则插入到cur的左子树if (val < cur.val - 500) {//如果没有左子树,则新建左子树,如果有,则更新cur=cur.leftif (cur.left == null) {cur.left = node;//插入后就跳出break;} else {//否则回到while继续搜索cur = cur.left;}} else if (val > cur.val + 500) {//插入右子树if (cur.right == null) {cur.right = node;break;} else {cur = cur.right;}} else {//插入中子树if (cur.mid == null) {cur.mid = node;break;} else {cur = cur.mid;}}}}}}
}

相关文章:

华为OD刷题C卷 - 每日刷题32(执行任务赚积分,计算三叉搜索树的高度)

1、&#xff08;执行任务赚积分&#xff09;&#xff1a; 这段代码是解决“执行任务赚积分”的问题。它提供了一个Java类Main&#xff0c;其中包含main方法和getResult方法&#xff0c;用于计算在有限的时间内&#xff0c;处理任务可以获得的最多积分。 main方法首先读取任务…...

QT系列教程(11) TextEdit实现Qt 文本高亮

文本高亮 对于textedit里录入的部分单词我们可以实现高亮&#xff0c;实现高亮主要依赖于QSyntaxHighlighter。 我们先创建一个Qt Application类&#xff0c;类名MainWindow, 然后新增一个C类&#xff0c;类名为MySyntaxHighlighter。 #ifndef MYSYNTAXHIGHLIGHTER_H #define …...

蓝队-溯源技巧

溯源技巧 大致思想 通常情况下&#xff0c;接到溯源任务时&#xff0c;获得的信息如下 攻击时间 攻击 IP 预警平台 攻击类型 恶意文件 受攻击域名/IP其中攻击 IP、攻击类型、恶意文件、攻击详情是溯源入手的点。 通过攻击类型分析攻击详情的请求包&#xff0c;看有没有攻击者…...

【5】JDK、JRE和JVM的区别与联系

JDK、JRE和JVM的区别与联系 Java是一种广泛使用的编程语言&#xff0c;它的跨平台特性得益于Java虚拟机&#xff08;JVM&#xff09;。然而&#xff0c;在Java的世界里&#xff0c;JDK、JRE和JVM这三个术语常常让人感到困惑。本文将阐述它们各自的功能&#xff0c;以及它们是如…...

【DevOps】Logstash详解:高效日志管理与分析工具

在现代软件开发和运维过程中&#xff0c;日志管理与分析是至关重要的环节。日志可以帮助我们追踪系统行为、诊断问题、优化性能以及确保安全合规。Logstash&#xff0c;作为ELK Stack&#xff08;Elasticsearch、Logstash、Kibana&#xff09;的核心组件之一&#xff0c;是一个…...

Vue3 之 Pinia 核心概念(八)

核心概念 State&#xff1a;这是你的应用程序的状态&#xff0c;是一个响应式的对象。 Getters&#xff1a;类似于 Vuex 中的 getters&#xff0c;它们是基于 state 的计算属性。 Actions&#xff1a;类似于 Vuex 中的 mutations 和 actions&#xff0c;它们用于改变 state。但…...

【办公类-04-03】华为助手导出照片视频分类(根据图片、视频的文件名日期分类导出)

背景需求&#xff1a; 用华为手机助手导出的照片视频&#xff0c;只能将jpg照片&#xff08;exifread读取图片的exif拍摄日期&#xff0c;Png、JPEG、mp4都无法识别到exif信息&#xff09; 【办公类-04-02】华为助手导出照片&#xff08;jpg&#xff09;读取拍摄时间分类导出…...

TVBOX 最新版下载+视频源教程

下载链接 wx 搜索 Geek 前端 发送电视资源进行获取 操作教程...

2024年了,苹果可以通话录音了

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 6月11日凌晨&#xff0c;苹果在WWDC24大会上&#xff0c;密集输出了酝酿多时的AI应用更新。苹果对通话、对话、图…...

书生·浦语大模型实战营第二期作业五

1、开发机创建conda环境&#xff1a; 2、安装第三方库&#xff1a; 3、新建pipeline_transformer.py文件&#xff0c;并运行&#xff1a; 4、运行结果&#xff1a; 5、执行模型&#xff1a; 6、与大模型进行对话&#xff1a; 7、默认占有的显存&#xff1a; 8、--cache-max-en…...

树莓派4B_OpenCv学习笔记9:图片的腐蚀与膨胀

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 图像的膨胀与腐蚀一般用于灰度图或者二值图,今日便来学习…...

Perplexity AI — 探索网络,发掘知识,沟通思想

体验地址&#xff1a;Perplexity AI &#xff08;国外网站访问需要梯子&#xff09; Perplexity AI是一款功能强大的人工智能搜索引擎&#xff0c;其特点和优势主要体现在以下几个方面&#xff1a; 功能&#xff1a; 自然语言搜索&#xff1a;Perplexity AI可以理解用户的自然…...

RPC知识

一、为什么要有RPC&#xff1a; HTTP协议的接口&#xff0c;在接口不多、系统与系统交互较少的情况下&#xff0c;解决信息孤岛初期常使用的一种通信手段&#xff1b;优点就是简单、直接、开发方便&#xff0c;利用现成的HTTP协议进行传输。 但是&#xff0c;如果是一个大型的网…...

【爬虫】requests 结合 BeautifulSoup抓取网页数据

一、BeautifulSoup使用步骤 BeautifulSoup 是一个用于从 HTML 或 XML 文件中提取数据的 Python 库。以下是如何使用 BeautifulSoup 来解析 HTML 并提取信息的基本步骤&#xff1a; 1、安装&#xff1a; 如果你还没有安装 BeautifulSoup&#xff0c;你可以使用 pip 来安装它。…...

安全测试框架 二

使用安全测试框架进行测试&#xff0c;可以遵循以下步骤进行&#xff0c;以确保测试的全面性和系统性&#xff1a; 一、明确测试目标和需求 确定测试的范围和重点&#xff0c;明确要测试的系统或应用的安全性方面的关键点和重要性。根据业务需求和安全标准&#xff0c;制定详…...

安徽京准-NTP网络授时服务器助力助力甘南州公共资源交易

安徽京准-NTP网络授时服务器助力助力甘南州公共资源交易 安徽京准-NTP网络授时服务器助力助力甘南州公共资源交易 2024年5月中旬&#xff0c;我安徽京准科技生产研发的NTP时钟服务器成功投运甘南州公共资源交易中心&#xff0c;为该中心的计算机网络系统及其他各业务子系统提供…...

大数据—什么是大数据?

大数据是指所涉及的资料量规模巨大到无法透过主流软件工具&#xff0c;在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。想要更加全面地了解大数据的概念&#xff0c;可以从以下几个维度进行介绍&#xff1a; 大数据的定义&#xff1a; 基本…...

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第十一周) - 自然语言处理扩展研究

自然语言处理扩展研究 1. 多语言研究2. 语言锚定3. 伦理问题 1. 多语言研究 多语言(Multilinguality)是NLP的一个重要研究方向&#xff0c;旨在开发能够处理多种语言的模型和算法。由于不同语言在语法、词汇和语义结构上存在差异&#xff0c;这成为一个复杂且具有挑战性的研究…...

支持向量机(SVM)中核函数的本质意义

本质上在做什么&#xff1f; 内积是距离度量&#xff0c;核函数相当于将低维空间的距离映射到高维空间的距离&#xff0c;并非对特征直接映射。 为什么要求核函数是对称且Gram矩阵是半正定&#xff1f; 核函数对应某一特征空间的内积&#xff0c;要求①核函数对称&#xff1b;②…...

SpringBoot使用jasypt实现数据库信息的脱敏,以此来保护数据库的用户名username和密码password(容易上手,详细)

1.为什么要有这个需求&#xff1f; 一般当我们自己练习的时候&#xff0c;username和password直接是爆露出来的 假如别人路过你旁边时看到了你的数据库账号密码&#xff0c;他跑到他的电脑打开navicat直接就是一顿连接&#xff0c;直接疯狂删除你的数据库&#xff0c;那可就废…...

NEURAL MASK 助力内容创作:自动化生成短视频高质量片头与转场

NEURAL MASK 助力内容创作&#xff1a;自动化生成短视频高质量片头与转场 短视频创作现在越来越卷&#xff0c;一个吸引人的开头和流畅的转场&#xff0c;往往决定了观众会不会继续看下去。但每次都要手动设计片头、制作转场动画&#xff0c;对创作者来说&#xff0c;尤其是需…...

Quartus II时序仿真全攻略:从功能验证到实际延迟分析的技巧解析

Quartus II时序仿真全攻略&#xff1a;从功能验证到实际延迟分析的技巧解析 在数字电路设计领域&#xff0c;仿真验证是确保设计正确性的关键环节。许多初学者在使用Quartus II进行FPGA开发时&#xff0c;往往只关注功能仿真而忽略了时序仿真的重要性&#xff0c;导致实际硬件运…...

Pixel Dimension Fissioner实战教程:自媒体博主爆款标题批量裂变工作流

Pixel Dimension Fissioner实战教程&#xff1a;自媒体博主爆款标题批量裂变工作流 1. 工具介绍与核心价值 Pixel Dimension Fissioner&#xff08;像素语言维度裂变器&#xff09;是一款专为内容创作者设计的智能文本增强工具。不同于传统AI工具的机械感&#xff0c;它以16-…...

Godot Engine集成ONLYOFFICE Docs:游戏开发中的文档处理完整指南

Godot Engine集成ONLYOFFICE Docs&#xff1a;游戏开发中的文档处理完整指南 【免费下载链接】DocumentServer ONLYOFFICE Docs is a free collaborative online office suite comprising viewers and editors for texts, spreadsheets and presentations, forms and PDF, full…...

国密算法C实现必须避开的7个隐性陷阱,第4个让国密SSL握手延迟飙升200ms!

第一章&#xff1a;国密算法C实现的性能瓶颈全景图国密算法&#xff08;如SM2、SM3、SM4&#xff09;在嵌入式设备、金融终端及政务系统中广泛部署&#xff0c;其C语言实现虽具备跨平台优势&#xff0c;但在实际运行中常遭遇多维度性能制约。深入剖析这些瓶颈&#xff0c;是优化…...

风暴级优化:STORM缓存机制如何将API调用成本降低70%?

风暴级优化&#xff1a;STORM缓存机制如何将API调用成本降低70%&#xff1f; 【免费下载链接】storm An LLM-powered knowledge curation system that researches a topic and generates a full-length report with citations. 项目地址: https://gitcode.com/GitHub_Trendin…...

SenseVoice-Small模型Dify工作流集成:打造无代码语音AI应用

SenseVoice-Small模型Dify工作流集成&#xff1a;打造无代码语音AI应用 你是不是也遇到过这样的场景&#xff1f;手头有一堆会议录音、访谈音频&#xff0c;需要整理成文字稿&#xff0c;再提炼出核心要点&#xff0c;最后还得把总结发出去。整个过程繁琐又耗时&#xff0c;得…...

Nanbeige 4.1-3B保姆级教程:添加用户反馈机制持续优化大贤者表现

Nanbeige 4.1-3B保姆级教程&#xff1a;添加用户反馈机制持续优化大贤者表现 1. 项目背景与目标 Nanbeige 4.1-3B是一款具有独特像素游戏风格的AI对话模型&#xff0c;其"大贤者"角色设定和复古JRPG界面设计为用户带来了全新的交互体验。但在实际使用中&#xff0c…...

SystemC内核调度揭秘:SC_THREAD和SC_METHOD在仿真中的执行机制详解

SystemC内核调度揭秘&#xff1a;SC_THREAD和SC_METHOD在仿真中的执行机制详解 SystemC作为硬件描述和验证语言的核心价值&#xff0c;在于其精确模拟硬件并行性的能力。这种能力很大程度上依赖于内核调度机制对SC_THREAD和SC_METHOD两种进程类型的差异化处理。理解这些底层原理…...

Boomi连续第12次获评“领导者”,并在2026年Gartner®集成平台即服务(iPaaS)魔力象限™中于“执行能力”维度位列最高

Boomi™&#xff08;数据激活领域企业&#xff09;今日宣布&#xff0c;其在2026年Gartner集成平台即服务&#xff08;iPaaS&#xff09;魔力象限™中获评“领导者”&#xff0c;并在“执行能力”维度位居最高。这是Boomi连续第12次获评该报告“领导者”&#xff0c;亦是该魔力…...