华为OD机试真题 新系统 2026-09-02 Java&Go&C【螳螂领地争霸】

SpringBoot支持动态更新配置文件参数 本文介绍SpringBoot在不重启服务的前提下动态刷新配置参数的实现方案。文章通过自定义DynamicPropertyUpdater与ConfigFileReloader组件,结合Environment属性源操作,实现单个配置项更新、批量更新以及重新加载整个配置文件,并给出接口测试步骤与效果验证。 阅读详情

目录

题目

思路

Code

题目

题目内容:

在一根很高的竹子上生活着一群螳螂,每只螳螂都有一段自己的势力范围,不同螳螂在竹子上的领地有可能重叠,当发现自己的领地内出现其它螳螂时就会战斗,失败一方领地会被胜利一方螳螂占领。

输入描述:

输入二维数组 originalLand,originalLand[i]=[x,y],表示第 i 只螳螂的领地在离地高度 [x,y] 之间的主干上 (x<y), 1 <= 数量 <= 50,0 <= x < y <= 150。

输出描述:

输出请返回领地斗争结束后螳螂们的领地信息。返回的领地信息数组中,按照领地坐标升序返回。

样例 1

输入:

[[1,5],[4,6],[8,15]]

输出:

[[1,6],[8,15]]

样例 2

输入:

[[3,7],[9,13]]

输出:

[[3,7],[9,13]]

样例 3

输入:

[[1,4],[4,5]]

输出:

[[1,5]]

思路

整体思路:按左端点排序后线性合并重叠或接触的闭区间。

第一步:按左端点、右端点升序排序。

第二步:当前左端点严格大于结果末段右端点时新增区间。

第三步:否则扩展末段右端点。

边界处理:端点相等必须合并;被完全包含的区间不会缩小合并段。

复杂度分析:时间 O(N log N),空间 O(N)。

思路配图

Code

import java.io.*;
import java.util.*;
import java.util.regex.*;

public class Main {
  public static void main(String[] args) throws Exception {
    Matcher matcher =
        Pattern.compile("\\d+").matcher(new String(System.in.readAllBytes()));
    List<int[]> lands = new ArrayList<>();
    // 每两个整数按原顺序还原为闭区间。
    // lands 中每个元素都保存一只螳螂的左、右边界,两个端点都属于它的领地。
    while (matcher.find()) {
      int left = Integer.parseInt(matcher.group());
      matcher.find();
      lands.add(new int[] {left, Integer.parseInt(matcher.group())});
    }
    // 左端点升序后只需比较结果中的最后一段。
    // 排序后,尚未处理区间的左端点不会变小,因此只需和已合并结果的最后一段比较。
    lands.sort((a, b)
                   -> a[0] != b[0] ? Integer.compare(a[0], b[0])
                                   : Integer.compare(a[1], b[1]));
    List<int[]> merged = new ArrayList<>();
    merged.add(lands.get(0).clone());
    for (int i = 1; i < lands.size(); i++) {
      int[] current = lands.get(i), last = merged.get(merged.size() - 1);
      if (current[0] > last[1]) {
        // 端点相等也会冲突,只有严格大于才新增区间。
        // 因为领地是闭区间,当前左端点等于已合并末段的右端点时共享同一位置,也必须视为冲突。
        merged.add(current.clone());
      } else {
        // 相交时扩展最右边界,维持末段的区间并集不变量。
        // 发生冲突后左边界仍是较早区间的起点,右边界取两段终点的较大值即可覆盖并集。
        last[1] = Math.max(last[1], current[1]);
      }
    }
    // 合并扫描不会打乱左端点顺序,所以无需再次排序,只按当前顺序拼接二维数组。
    StringJoiner output = new StringJoiner(",", "[", "]");
    for (int[] item : merged)
      output.add("[" + item[0] + "," + item[1] + "]");
    System.out.println(output);
  }
}

Go

package main

import (
    "fmt"
    "io"
    "os"
    "regexp"
    "sort"
    "strconv"
    "strings"
)
type interval struct { left, right int }
func main() {
    data, _ := io.ReadAll(os.Stdin)
    tokens := regexp.MustCompile(`\d+`).FindAllString(string(data), -1)
    // 每两个整数按顺序还原为闭区间。
    // lands 中每个元素都保存一只螳螂的左、右边界,两个端点都属于它的领地。
    lands := make([]interval, 0, len(tokens)/2)
    for i := 0; i+1 < len(tokens); i += 2 {
        left, _ := strconv.Atoi(tokens[i]); right, _ := strconv.Atoi(tokens[i+1])
        lands = append(lands, interval{left, right})
    }
    // 左端点升序后,与当前结果末段冲突的区间连续出现。
    // 排序后,尚未处理区间的左端点不会变小,因此只需和已合并结果的最后一段比较。
    sort.Slice(lands, func(i, j int) bool {
        if lands[i].left != lands[j].left { return lands[i].left < lands[j].left }
        return lands[i].right < lands[j].right
    })
    merged := []interval{lands[0]}
    for _, current := range lands[1:] {
        last := &merged[len(merged)-1]
        if current.left > last.right {
            // 严格分离才新增段,端点接触也需要合并。
            // 因为领地是闭区间,当前左端点等于已合并末段的右端点时共享同一位置,也必须视为冲突。
            merged = append(merged, current)
        } else if current.right > last.right {
            // 相交时扩展并集右边界。
            // 发生冲突后左边界仍是较早区间的起点,右边界取两段终点的较大值即可覆盖并集。
            last.right = current.right
        }
    }
    parts := make([]string, len(merged))
    for i, item := range merged { parts[i] = fmt.Sprintf("[%d,%d]", item.left, item.right) }
    // Join 生成升序、无空格二维数组。
    // 合并扫描不会打乱左端点顺序,所以无需再次排序,只按当前顺序拼接二维数组。
    fmt.Printf("[%s]\n", strings.Join(parts, ","))
}

C

#include <stdio.h>
#include <stdlib.h>

typedef struct {
  int left;
  int right;
} Interval;
int compare_interval(const void *a, const void *b) {
  const Interval *x = a, *y = b;
  if (x->left != y->left)
    return x->left - y->left;
  return x->right - y->right;
}
int main(void) {
  Interval lands[50];
  int size = 0, left;
  // 跳过括号和逗号,每两个整数还原为闭区间。
  // lands 中每个元素都保存一只螳螂的左、右边界,两个端点都属于它的领地。
  while (scanf("%*[^0-9]") != EOF || 1) {
    if (scanf("%d", &left) != 1)
      break;
    scanf("%*[^0-9]");
    scanf("%d", &lands[size].right);
    lands[size++].left = left;
  }
  // 左端点排序后只需与结果末段比较。
  // 排序后,尚未处理区间的左端点不会变小,因此只需和已合并结果的最后一段比较。
  qsort(lands, (size_t)size, sizeof(Interval), compare_interval);
  Interval merged[50];
  int count = 1;
  merged[0] = lands[0];
  for (int i = 1; i < size; i++) {
    if (lands[i].left > merged[count - 1].right) {
      // 只有严格分离才新增区间,端点接触同样冲突。
      // 因为领地是闭区间,当前左端点等于已合并末段的右端点时共享同一位置,也必须视为冲突。
      merged[count++] = lands[i];
    } else if (lands[i].right > merged[count - 1].right) {
      // 相交区间向右延伸时更新并集右边界。
      // 发生冲突后左边界仍是较早区间的起点,右边界取两段终点的较大值即可覆盖并集。
      merged[count - 1].right = lands[i].right;
    }
  }
  // 合并结果按坐标升序并使用紧凑格式。
  // 合并扫描不会打乱左端点顺序,所以无需再次排序,只按当前顺序拼接二维数组。
  printf("[");
  for (int i = 0; i < count; i++)
    printf(i ? ",[%d,%d]" : "[%d,%d]", merged[i].left, merged[i].right);
  printf("]\n");
  return 0;
}

【华为od机试真题Python+JS+Java+Go合集】【超值优惠】:Py/JS/Java/Go合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java&Go】:Java&Go真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群】【文章底部有二维码链接,可扫码加交流群】

华为OD机试面试交流群二维码

华为OD机试:二本院校有机会吗? 有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。

TNS-12516及ORA-12516错误解决 在客户端进行sqlplus连接报错如下: ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 在/home/oracle/product/10.2.0/db_1/network/log/listener.log中查看到错误如下: TNS-12516: TNS:listener could not find available handler with matchin 阅读详情

相关推荐

从零开始:Doherty功率放大器的ADS仿真实践指南

本文详细介绍了Doherty功率放大器在ADS中的仿真设计流程,从基础原理到实际工程应用。通过负载调制技术,Doherty结构显著提高了功率放大器的效率,特别适合处理高峰均比信号。文章包含ADS环境搭建、对称与非对称设计、常见问题调试等实用内容,为射频工程师提供全面的实践指南。

weixin_29313547的博客 679

华为od笔试题目

牛客“分田地” / 洛谷P3017 Brownie Slicing (二维切巧克力,最大最小)力扣239滑动窗口最大值 (单调队列模板)+ 前缀和 的组合。

新人 27

RAID 0/1/5/10 性能实测:4块 SATA SSD 组阵列,顺序读写速度对比

本文通过实测对比了RAID 0/1/5/10在4块SATA SSD上的顺序读写性能,详细展示了不同RAID级别的配置方法、理论性能与实际测试数据。测试结果显示,RAID 0在顺序读写速度上表现最佳,而RAID 10则在性能与数据安全之间取得了平衡,适合数据库服务器等关键应用场景。

weixin_33462167的博客 413

静态脱敏系统技术趋势分析

静态脱敏系统技术趋势分析要回答的不是买了哪些新功能,而是哪些能力正在变成出厂默认。本文从确定性脱敏、规则版本化、可逆受控与导出验签四条线,拆解趋势判断的可复算落点,并给出采购方可以直接核对的清单。

xingxiuer的博客 267

网络基础(二):数制转换与分类编址的IPv4地址

本文介绍数制转换、IP地址、分类编址的IPv4地址,希望对你有帮助!

十七拾的博客 1049

基于NE555的触摸延时开关电路设计与实现

本文详细介绍了基于NE555芯片的触摸延时开关电路设计与实现方法。通过分析NE555的单稳态工作模式,结合定时电阻、电解电容等关键元件选型,提供了一套完整的电路搭建方案。文章还包含抗干扰设计、调试技巧及常见故障处理,帮助电子爱好者快速掌握触摸延时灯的制作要点。

weixin_29268267的博客 774

Maven 下载与配置教程(新手友好版)

本文档手把手教你在 Windows 系统上安装和配置 Maven,全程从官方渠道下载,安全可靠。

qq_36085846的博客 248

【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局

本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。

weixin_29271263的博客 239

构造函数表达式的值类别是:prvalue

C++ 中构造表达式 T() 的结果为 prvalue,因其本质是“对象的初始化配方”而非已有对象。这一设计使编译器能强制执行复制消除(C++17起),直接在目标位置构造对象,实现零开销优化。即使类型不可拷贝或不可移动,也能合法初始化。同时,prvalue绑定引用时物化为xvalue,延长生命周期。该机制清晰区分初始化、移动与持久对象,是返回值优化和高效资源管理的语言基础。

jimy1的博客 481

SAP-ABAP:SAP中的用户确认对话框:深入理解与实践POPUP_TO_CONFIRM

本文深入介绍了SAP中的用户确认对话框函数POPUP_TO_CONFIRM,包括其核心参数配置、返回值处理、应用场景和最佳实践。该函数是SAP二次开发中重要的交互工具,用于关键操作前获取用户确认,防止误操作。文章详细解析了参数设置技巧,强调必须全面处理所有可能的返回值,并提供了删除数据、批量操作等典型应用场景的代码示例。同时对比了其他类似弹出函数,帮助开发者选择合适工具。正确使用该函数可提升系统安全性、改善用户体验并符合SAP设计规范。

baidu_35680696的博客 963

isaaclab无法识别NVIDIA显卡,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1140

LeetCode100 1.两数之和

暴力枚举法时间复杂度为O(n²),空间O(1),直观但效率低。优雅解法利用HashMap,遍历中先查补数、后存当前值,平均时间复杂度O(n),空间O(n)。虽最坏情况(哈希冲突严重)理论可达O(n²),但Java 8+中链表超过8个元素转为红黑树,最坏退化至O(n log n),实际性能优异。

Shaoxingzong的博客 300

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查

开启虚拟线程后线程告警消失,HikariCP 连接池超时却更早出现。先用 JFR 事件排除 `synchronized` 阻塞,再按并发预算重算连接池容量。

昨日种种,皆成今我。今日种种,皆成新我。 324

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

移动端 CPU 调度分析:线程亲和性、大小核迁移与卡顿

移动端卡顿常非代码瓶颈,而是调度问题。线程迁移、缓存失效、优先级反转、队列竞争等会显著增加等待时间,使相同工作耗时上升。需通过调度时间线区分运行与等待成本,分析核心类别、频率变化、锁状态及线程池负载。验证应控制变量,避免误判。修复关键在优化同步、控线程数、调优先级,而非盲目绑核。

m0_59437018的博客 247

DDD(领域驱动设计)篇四:退费 + 支付,三层 vs DDD 各撸一遍

DDD 不是一门新技术,而是一种纪律——业务规则集中放、用业务的语言放、放在划清的边界内。三层架构没有错,它只是没有回答"规则放哪"这个问题;DDD 回答了,代价是多写几个类、多学几个概念。 代码会写了,再读书就不抽象了。推荐顺序: 《实现领域驱动设计》(Vaughn Vernon,"红书")——比原著(蓝书)好读得多,先读前半部分; 蓝书挑着读:只读"统一语言""限界上下文"两章。

Good good study,day day up 71

欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则

德法比推行企业间结构化电子发票(EN 16931)。本文讲金额怎么算才能过校验、怎么用 Python + saxonche 不装 Java 跑 XRechnung/Peppol 官方 Schematron,以及 Leitweg-ID 校验位这类官方规则查不到的坑,并介绍开源工具 eu-einvoice。

weixin_38859100的博客 237

Spring Boot的配置文件

本文介绍了Spring Boot中配置文件的使用,重点对比了application.properties与application.yml两种格式。properties为键值对形式,注释易乱码;yml语法更简洁,支持层级结构,优先级高于properties。通过@Value、@ConfigurationProperties可读取配置项,后者支持对象绑定。配置文件需统一格式,避免冲突。同时介绍了配置项读取流程及注解使用注意事项。

captain376的博客 240

若依项目新建业务模块

本文介绍了在若依框架中新建业务子模块的完整步骤:通过Maven创建子模块,引入ruoyi-framework依赖;在父工程中锁定子模块版本;在ruoyi-admin中添加依赖并刷新Maven;最后重启项目即可成功加载新模块。图文结合,清晰展示操作流程,确保模块集成顺利。

weixin_50379372的博客 158

基于 Spring Cloud Alibaba 的微服务架构设计与落地实践

本文介绍基于Spring Cloud Alibaba的微服务架构方案,整合Nacos、Sentinel、Seata、RocketMQ等组件,实现服务注册发现、配置管理、流量防护、分布式事务与消息驱动。通过统一版本管理、四层分层架构与按业务拆分的服务设计,结合Feign实现服务调用,配合动态配置刷新与降级容错,构建高可用、可扩展的微服务系统。

薛之谦 203

LeetCode Hot 100 · 双指针 3 题 Java

LeetCode Hot 100 · 双指针 3 题,覆盖 11 盛最多水的容器、15 三数之和、42 接雨水,主线是排序 / 双指针 / 前缀最值与「短板效应」。

2401_88612756的博客 355

《On Java 中文版 基础卷》阅读笔记 实现隐藏 11

《On Java 中文版 基础卷》阅读笔记 实现隐藏 11

道友 167

第 3 篇:Ubuntu 配置 JDK 17 环境

本文介绍在 Ubuntu 24.04 上通过 APT 安装并配置 OpenJDK 17 的完整流程。包括查看可用版本、安装 JDK 17、验证安装、设置 JAVA_HOME 环境变量(推荐使用 /etc/profile.d/java.sh 方式)、多版本切换及测试程序验证。步骤简洁稳定,适用于开发与部署 Spring Boot 等 Java 应用场景。

John_DHui的博客 231

Spring Boot + Maven 接入 Allatori:从普通打包到可选混淆发布

本文介绍如何在 Spring Boot 工程中通过 Maven 集成 Allatori,实现按需启用的混淆打包,并同时保留普通包和混淆包。文章提供完整的 POM 与混淆配置,解释构建顺序、名称保留规则,以及 Spring、MyBatis、JSON 序列化和反射场景下的兼容性处理。同时结合实际接入过程,记录变量替换、重复打包等常见问题,说明如何验证混淆产物、归档映射日志和接入 CI,方便首次配置或后续迁移时照着操作。

jianxuan的专栏 355

SpringBoot信创项目怎么验收?从数据库迁移到交付证据

从真实信创实验记录出发,拆解版本基线、SQL审计、运行时适配与业务闭环,给出能够落实到交付文档的验收方法。

ruoyioffice的博客 381

【Linux】linux线程同步(条件变量的详解与实现)

本文系统讲解了POSIX条件变量的使用,涵盖初始化、等待、唤醒、超时及销毁等核心函数。强调条件变量需与互斥锁配合,通过while循环重新检查共享状态,避免虚假唤醒和竞态。重点指出:线程等待的是条件而非通知,通知不会被保留,修改共享状态必须持锁。结合生产者-消费者模型示例,阐明正确使用方式,并总结常见错误,如误用if、依赖唤醒顺序等。核心原则为“等待条件,而非通知”,确保多线程同步安全可靠。

2401_85487070的博客 195

网约车App开发方案借鉴:技术选型与上架避坑指南

本文拆解网约车App从技术选型到上架的全流程,涵盖原生与跨端抉择、实时消息与地图SDK成本、后台定位保活、厂商推送适配、订单状态幂等等关键问题,附可执行检查清单与成本反推方法,帮助团队少走弯路。

HZMSY001的博客 172
上一篇: 华为OD机试真题 新系统 2026-09-06 Python&JS【嵌入式传感器寄存器数据解析】
下一篇: 华为OD机试真题 新系统 2026-09-06 C++【仓储货物有序出库】
MISAYAONE
博客等级 码龄11年 2万+粉丝 4119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值