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

华为5.7机考第一题充电桩问题Java代码实现

题目描述:

输入描述:

输出描述:

示例:

输入:

3 5
0 0
1 4
5 6
2 3
7 8
3 -1

输出:

5 3 -1 4
1 1 4 5
3 2 3 5

题解:Java中可以使用最大堆(通过最小堆模拟)来找到距离最近的k个点:

代码:

import java.util.*;
import java.io.*;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] data = br.readLine().split(" ");int k = Integer.parseInt(data[0]);int n = Integer.parseInt(data[1]);int carX = Integer.parseInt(data[2]);int carY = Integer.parseInt(data[3]);// 边界条件if (k == 0 || k > n) {System.out.println("null");return;}// 使用优先队列模拟最大堆,存储(-distance, -id, x, y)PriorityQueue<int[]> heap = new PriorityQueue<>((a, b) -> {if (a[0] != b[0]) return a[0] - b[0];  // 按-distance升序(相当于distance降序)else return a[1] - b[1];               // 然后按-id升序});int idx = 4;for (int i = 1; i <= n; i++) {int x = Integer.parseInt(data[idx++]);int y = Integer.parseInt(data[idx++]);int d = Math.abs(carX - x) + Math.abs(carY - y);// 将元素加入堆(使用负值模拟最大堆)heap.offer(new int[]{-d, -i, x, y});// 保持堆的大小不超过kif (heap.size() > k) {heap.poll();}}// 提取结果并排序List<int[]> result = new ArrayList<>();while (!heap.isEmpty()) {int[] item = heap.poll();result.add(new int[]{-item[0], -item[1], item[2], item[3]});}// 按距离升序、编号升序排序result.sort((a, b) -> {if (a[0] != b[0]) return a[0] - b[0];else return a[1] - b[1];});// 输出结果for (int[] item : result) {System.out.println(item[1] + " " + item[2] + " " + item[3] + " " + item[0]);}}
}
http://www.xdnf.cn/news/359479.html

相关文章:

  • Sourcetree安装使用的详细教程
  • 深入解析网络联通性检测:ping 与 tracert 的原理、用法及实战应用
  • 范式之殇-关系代数与参照完整性在 Web 后台的落寞
  • Linux基础篇命令整合表(大全)
  • Cjson格式解析与接入AI大模型
  • Git标签删除脚本解析与实践:轻松管理本地与远程标签
  • Mysql--基础知识点--91.2--processlist
  • 【LangChain高级系列】LangGraph第一课
  • 开目新一代MOM:AI赋能高端制造的破局之道
  • redhat9 安装pywinrm
  • 制造企业如何选择项目管理软件系统提高项目执行的效率和质量
  • 面试题:请解释Java中的反射机制,并说明其使用场景
  • 2025年科学教育与文化交流国际会议(IACSECE 2025)
  • 【软件设计师:数据】17.数据安全
  • LeetCode 3342.到达最后一个房间的最少时间 II:dijkstra算法(和I一样)
  • 基于OpenCV的人脸识别:EigenFaces算法
  • 变桨系统升级新引擎:CAN转ModbusTCP协议转换技术破解风电数字化困局
  • 在 Spring Boot 中实现动态线程池的全面指南
  • Github 2025-05-09 Java开源项目日报 Top10
  • Error parsing column 10 (YingShou=-99.5 - Double) dapper sqlite
  • 坐席业绩可视化分析工具
  • AbMole:QS-21的作用机理及免疫应用
  • J-Scope的RTT模式
  • 智慧工会服务平台建设方案Word(23页)
  • 智慧农业运维平台养殖—传感器管理监控设计—仙盟创梦IDE
  • AI日报 · 2025年5月09日|OpenAI Deep Research 上线 GitHub Connector Beta
  • 爬虫学习————开始
  • 健康养生:雕琢生命的细腻艺术
  • springboot3 + mybatis-plus3 创建web项目实现表增删改查
  • isaacsim基础基础教程,以及如何添加fixedjoint,在Isaacsim中什么是prim,什么是xform