news 2026/2/10 23:12:02

(新卷,100分)- 租车骑绿岛(Java JS Python)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 租车骑绿岛(Java JS Python)

(新卷,100分)- 租车骑绿岛(Java & JS & Python)

题目描述

部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。
给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入描述

第一行两个数字m、n,分别代表自行车限重,部门总人数。

第二行,n个数字,代表每个人的体重,体重都小于等于自行车限重m。

  • 0<m<=200
  • 0<n<=1000000
输出描述

最小需要的双人自行车数量。

用例
输入3 4
3 2 2 1
输出3
说明
题目解析

本题需要最少的车辆,即尽可能组合出重量小于等于m的两人组。

首先,我们可以将所有人按体重升序,然后将最大体重和m比较,若最大体重大于等于m,则这个人只能一人占一辆车,车数量count++,然后将最大体重弹出,继续将剩下体重中最大的和m比较,逻辑同上,直到最大体重小于m时,停止弹出。

在剩余体重中,我们利用双指针,i指针指向最小体重,j指针指向最大体重,然后组合它们,即arr[i]+arr[j],和m比较,若小于等于m,则说明这两个人可以共享一辆车,车数量count++,然后i++,j--。如果arr[i]+arr[j]>m,则说明两个人无法共享一辆车,我们只能优先将这里车分配给较大体重的人,此时车数量count++,然后j--。

按上面逻辑移动双指针,最后可能会出现两种情况:

  • i > j 此情况下所有人均分配到了车,因此可以直接输出count作为题解
  • i === j 此情况下还有一个人未分配到车,因此需要count++,为这个人单独分配一辆车
JavaScript算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines = []; rl.on("line", (line) => { lines.push(line); if (lines.length === 2) { const [m, n] = lines[0].split(" ").map(Number); const arr = lines[1].split(" ").map(Number); console.log(getResult(arr, m, n)); lines.length = 0; } }); function getResult(arr, m, n) { arr.sort((a, b) => a - b); let count = 0; // while (arr.at(-1) >= m) { // count++; // arr.pop(); // } let i = 0; let j = arr.length - 1; while (i < j) { if (arr[i] + arr[j] <= m) i++; j--; count++; } if (i === j) count++; return count; }
Java算法源码
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } System.out.println(getResult(arr, m)); } public static int getResult(int[] arr, int m) { Arrays.sort(arr); int count = 0; int i = 0; int j = arr.length - 1; while (i < j) { if (arr[i] + arr[j] <= m) i++; j--; count++; } if (i == j) count++; return count; } }
Python算法源码
# 输入获取 m, n = map(int, input().split()) arr = list(map(int, input().split())) # 算法入口 def getResult(arr, m, n): arr.sort() count = 0 i = 0 j = n - 1 while i < j: if arr[i] + arr[j] <= m: i += 1 j -= 1 count += 1 if i == j: count += 1 return count # 算法调用 print(getResult(arr, m, n))
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 10:06:45

Java开发者必看:Seed-Coder-8B-Base如何优化日常编码?

Java开发者必看&#xff1a;Seed-Coder-8B-Base如何优化日常编码&#xff1f; 在现代Java开发中&#xff0c;面对Spring生态的复杂配置、庞大的类库体系以及严格的代码规范&#xff0c;开发者常常陷入重复编码与调试陷阱。即便经验丰富的工程师&#xff0c;也难以避免手写gette…

作者头像 李华
网站建设 2026/2/6 16:33:10

不被任何人拿捏的妙招:跳针沟通法

“最完美的胜利&#xff0c;就是别人从你这儿得不到任何回应。” 我在聚餐时见过一个特别牛的人。 有个人在那儿特别低情商&#xff0c;一个劲评价他的穿着&#xff1a;"你看你穿的衣服&#xff0c;衣服裤子款式都很好&#xff0c;但搭配起来很难看……" 那个人听…

作者头像 李华
网站建设 2026/2/3 0:29:37

DiskInfo下载官网数据辅助分析Wan2.2-T2V-5B磁盘IO性能瓶颈

DiskInfo 数据辅助分析 Wan2.2-T2V-5B 磁盘 IO 性能瓶颈 在短视频生成、实时内容创作等场景中&#xff0c;AI模型的“响应速度”直接决定用户体验。Wan2.2-T2V-5B 作为一款参数量约50亿的轻量化文本到视频&#xff08;Text-to-Video, T2V&#xff09;模型&#xff0c;凭借其秒级…

作者头像 李华
网站建设 2026/2/8 21:13:17

gpt-oss-20b与Codex对比:谁更适合代码生成任务?

gpt-oss-20b 与 Codex 对比&#xff1a;谁更适合代码生成任务&#xff1f; 在今天的软件开发环境中&#xff0c;AI 驱动的编程辅助已不再是未来构想&#xff0c;而是每天都在发生的现实。从自动补全到整函数生成&#xff0c;大语言模型&#xff08;LLM&#xff09;正深度介入开…

作者头像 李华
网站建设 2026/2/7 9:59:22

Dify外部API连接Qwen-Image-Edit-2509与其他SaaS工具

Dify 外部 API 连接 Qwen-Image-Edit-2509 与其他 SaaS 工具 在电商运营的日常中&#xff0c;一个常见的场景是&#xff1a;市场团队需要为即将到来的冬季促销活动&#xff0c;将上百款产品的模特图背景统一更换为雪景&#xff0c;并把夹克换成羽绒服。过去&#xff0c;这项任务…

作者头像 李华
网站建设 2026/2/8 11:06:56

Layui-Vue:构建企业级应用的终极Vue组件解决方案

Layui-Vue是一个基于Vue 3.0构建的企业级UI组件库&#xff0c;继承了Layui经典的设计理念&#xff0c;为开发者提供80开箱即用的高质量组件&#xff0c;覆盖后台管理系统全流程需求。通过精心设计的API接口和直观的使用方式&#xff0c;Layui-Vue让企业应用开发变得简单高效&am…

作者头像 李华