华为OD刷题C卷 - 每日刷题 12(数组连续和,求最多可以派出多少支团队)

1、(数组连续和):

这段代码是解决“数组连续和”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算给定数组中有多少个连续区间的和大于等于给定值x

main方法首先读取数组的长度n和阈值x,然后读取数组nums中的元素。接着,调用getResult方法并打印结果。

getResult方法使用前缀和数组preSum来高效地计算连续区间的和。前缀和数组preSum[i]表示数组中前i个元素的和。通过遍历数组并使用双指针技术(在这里是两个索引lr),代码可以找到所有满足条件的连续区间。当当前区间的和大于等于x时,由于数组中的数都是正整数,可以确定从当前右指针r开始向左直到数组末尾的所有区间的和也都大于等于x。因此,可以将计数器count增加相应的数量,并将左指针l向右移动以继续寻找下一个区间。

2、(求最多可以派出多少支团队):

这段代码是解决“求最多可以派出多少支团队”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算在给定最低能力值要求下,最多可以组成多少支团队。

main方法首先读取总人数n,然后读取每个人的能力值数组power,最后读取团队要求的最低能力值minPower。接着,调用getResult方法并打印可以派出的团队数量。

getResult方法首先对能力值数组进行升序排序。然后使用双指针技术,从数组的两端开始,先计算能够单独组队的人数(即能力值大于等于minPower的人数)。接着,从左指针l开始,尝试与右指针r配合,形成能力值总和大于等于minPower的团队。如果两个人的能力值之和小于minPower,则左指针l向右移动,寻找下一个可能的团队组合。

package OD223;import java.util.Scanner;/*** @description 数组连续和* @level 6* @score 100*//*** 题目描述* 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。* <p>* 输入描述* 第一行两个整数N x(0 < N <= 100000, 0 <= x <= 10000000)* <p>* 第二行有N个正整数(每个正整数小于等于100)。* <p>* 输出描述* 输出一个整数,表示所求的个数。* <p>* 注意:此题对效率有要求,暴力解法通过率不高,请考虑高效的实现方式。*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//数组个数int n = sc.nextInt();//需要大于等于xint x = sc.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = sc.nextInt();}System.out.println(getResult(nums, x));}//有多少个连续数组和大于等于xpublic static long getResult(int[] nums, int x) {long len = nums.length;long count = 0;//因为有效率要求,不能每次都求和,用前缀和来表示long[] preSum = new long[(int) (len + 1)];//preSum[i]表示前面i个数的和for (int i = 1; i <= len; i++) {preSum[i] = preSum[i - 1] + nums[i - 1];}//while循环int l = 0;int r = 1;while (r <= len) {long sum = preSum[r] - preSum[l];if (sum >= x) {//[l,r]区间的和已经大于x了,则[l,r,....len-1]区间的和必定大于x (都是正整数)count += len - r + 1;//窗口滑动l++;r = l + 1;} else {r++;}}return count;}}
package OD226;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;/*** @description 求最多可以派出多少支团队* @level 5* @score 100*//*** 题目描述* 用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或者2人组成,且1个人只能参加1个团队,计算出最多可以派出多少只符合要求的团队。* <p>* 输入描述* 第一行代表总人数,范围1-500000* 第二行数组代表每个人的能力* 数组大小,范围1-500000* 元素取值,范围1-500000* 第三行数值为团队要求的最低能力值,范围1-500000* 输出描述* 最多可以派出的团队数量*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//代表总人数int n = sc.nextInt();//每个人的能力值int[] power = new int[n];for (int i = 0; i < n; i++) {power[i] = sc.nextInt();}//团队要求最低能力值int minPower = sc.nextInt();System.out.println(getResult(power, minPower));}//最多可以派出多少团队 能一个人满足的就一个人组队public static int getResult(int[] power, int minPower) {int n = power.length;//升序排列Arrays.sort(power);//双指针int l = 0;int r = n - 1;int count = 0;//先记录单人组队while (r >= l && power[r] >= minPower) {count++;r--;}//把小于<=minPower的两两分组 尽可能多while (l < r) {int sum = power[l] + power[r];//如果此时无法组队,则l位置的不可能组队成功if (sum < minPower) {l++;} else {//组队成功count++;l++;r--;}}return count;}
}

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

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

相关文章

【Javascript修炼篇】如何对JSON格式进行转换

这将是我们几乎日常都会用到的一个超实用函数。 根据数据的多样性与结构&#xff0c;API 的响应可能会返回极其复杂的 JSON 对象。有时候&#xff0c;仅仅从整个 JSON 中抓取一个字段可能就不太够用了。我们可能需要提取多个字段来展示在网页上。每次手动遍历这样的复杂 JSON …

两站图片滑动对比效果实现(VUE3)

像这种图片滑动对比的效果&#xff0c;网上还不少见吧&#xff0c;但是网上却不好找到完整现成的实现代码&#xff0c;我找到几个地方有类似的代码&#xff0c;但是都不好直接移植到代码里&#xff0c;因为很多都是使用原生htmlcssjs实现&#xff0c;太复杂了。反而不好应用到v…

Qt for Android 之 OpenCV编译(Windows下编译)

简介 前两天刚好更新了4.10, 这里以4.10作为示例进行编译&#xff0c; Qt版本是Qt6.6.2。 准备OpenCV的Android库 一. 使用官方编译好的库 1. 下载OpenCV android SDK opencv-4.10.0-android-sdk.zip 2. 解压缩 官方提供的包含了多个架构的opencv android库 二. 自行编译…

十三、【源码】ResultMap解析

源码地址&#xff1a;https://github.com/mybatis/mybatis-3/ 仓库地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/13-resultMap ResultMap解析 分为两部分&#xff1a;解析和使用 1.解析 解析XML的时候单独解析所有的resultMap标签&#xff0c;封装成Re…

MySQL 核心模块揭秘 | 19 期 | 锁模块里有什么?什么样?

InnoDB 中管理表锁和行锁的锁模块&#xff0c;也就是传说中的锁子系统&#xff0c;在内存里是什么样的&#xff1f; 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品…

LabVIEW开发EOL功能测试系统

LabVIEW开发EOL功能测试系统 介绍了一种基于LabVIEW开发的EOL功能测试系统方案&#xff0c;涵盖软件架构、工作流程、模块化设计、低耦合性、易于修改与维护、稳定性及硬件选型。系统通过高效的CAN通信实现对电机控制器的全面测试&#xff0c;确保运行可靠并支持未来的升级需求…

危机公关之负面信息优化技巧解析

当今时代&#xff0c;网络发布信息没有任何门槛&#xff0c;任何人可以通过互联网发布信息&#xff0c;这使负面信息产生的可能性大大提高&#xff0c;企业形成危机的可能性也大大提高。针对网络上的负面信息处理得当可能并不会对品牌造成伤害&#xff0c;处理不当就很可能给企…

QT之可拖动布局研究

1. 背景 最开始只用到了最基本的水平布局 、垂直布局。它的好处就是窗口整体缩放后&#xff0c;控件也自动等比例缩放。 但是比如水平布局之中的控件宽度比例、垂直布局之中的控件高度比例都是固定的。 平时也不怎么开发界面&#xff0c;最近有个需求&#xff0c;想界面上的…

Atlassian企业日技术分享:AI在ITSM中的创新实践与应用、Jira服务管理平台AI功能介绍

2024年5月17日&#xff0c;Atlassian中国合作伙伴企业日活动在上海成功举办。活动以“AI协同 创未来——如何利用人工智能提升团队协作&#xff0c;加速产品交付”为主题&#xff0c;深入探讨了AI技术在团队协作与产品交付中的创新应用与实践&#xff0c;吸引了众多业内专家、企…

ros1中的server服务的创建与使用函数指针类型别名请求处理函数

ros1中的server服务的创建与使用函数指针类型别名请求处理函数 法一: #include "ros/ros.h" //自定义消息 #include "trilateration/trilateration_srvs.h"void handleDeletePosint(const trilateration::trilateration_srvs::Request& req, trilate…

深圳比创达电子EMC|EMC与EMI一站式解决方案:攻克电磁兼容难题

在当今这个科技日新月异、电子产品层出不穷的时代&#xff0c;电磁兼容&#xff08;EMC&#xff09;与电磁干扰&#xff08;EMI&#xff09;问题愈发凸显其重要性。为了确保电子设备的正常运行&#xff0c;减少电磁干扰对环境和人体的影响&#xff0c;EMC与EMI一站式解决方案成…

【回眸】Linux内核(十)system()函数与popen()函数

前言 system()函数的作用是执行一个shell脚本或者shell指令 popen与system()函数类似,不同点是popen()函数可以获取运行的shell脚本或者命令的输出结果 system() 函数参数 #include <stdlib.h> int system(const char *comand) 参考示例代码: #include <stdio.…

2023年全国消费品“增品种、提品质、创品牌”三品战略发展成果报告

来源&#xff1a;赛迪&欧特欧 近期历史回顾&#xff1a; 2023工业无线电磁环境白皮书——有色金属制造行业.pdf 2024出海企业人才发展实践指南.pdf 2024年全球电子商务市场.pdf 宝钢低碳钢铁技术策划及开发-钟勇.pdf 2023-2024年度中国智能制造产业发展报告.pdf 2024精准医…

【AI大模型】Function Calling

目录 什么是Function Calling 示例 1&#xff1a;调用本地函数 Function Calling 的注意事项 支持 Function Calling 的国产大模型 百度文心大模型 MiniMax ChatGLM3-6B 讯飞星火 3.0 通义千问 几条经验总结 什么是Function Calling Function Calling 是一种函数调用机…

【C++ | 构造函数】类的构造函数详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-06-06 0…

HCIA-RS基础-VLAN配置

目录 前言创建拓扑创建VLAN查看创建的VLAN配置trunk口并放行VLAN配置access接口查看所有vlan基本信息测试网络连通性命令合集 前言 VLAN定义&#xff1a;VLAN是一种将局域网内的设备从逻辑上划分成一个个网段&#xff0c;从而实现虚拟工作组的新兴数据交换技术。VLAN优点&…

设计模式-单例模式(创建型)

创建型-单例模式 了解单例 单例模式是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式;它必须保证&#xff1a; 单例类只能有一个实例化对象&#xff1b;单例类必须创建自己的唯一实例&#xff1b;单例类必须给其他对象提供实例&#xff1b; 另外&#xff1a;…

【面试笔记】嵌入式软件工程师,汽车电子软件相关

文章目录 1. C语言基础1.1 const1.2 static1.3 回调函数的用法1.4 宏定义1.5 编译、链接过程1.6 堆与栈的区别&#xff1f;1.7 简单的字符串算法题&#xff0c;C语言实现1.7.1 给定一个字符串&#xff0c;按顺序筛选出不重复的字符组成字符串&#xff0c;输出该字符串1.7.2 给定…

Python3 迭代器和生成器

前言 本文主要介绍Python中的迭代器和生成器&#xff0c;主要内容包括 迭代器概述、生成器简介。 文章目录 前言一、迭代器简介二、生成器简介 一、迭代器简介 在 Python 中&#xff0c;迭代器(iterator)是一个实现了迭代器协议&#xff08;Iterator Protocol&#xff09;的…

opencv进阶 ——(十一)基于RMBG实现生活照生成寸照

实现步骤 1、检测人脸&#xff0c;可以使用opencv自带的级联分类器或者dlib实现人脸检测 2、放大人脸范围&#xff0c;调整到正常寸照尺寸 3、基于RMGB算法得到人像掩码 4、生成尺寸相同的纯色背景与当前人像进行ALPHA融合即可 alpha融合实现 void alphaBlend(cv::Mat&…