华为OD机试 - 最长的连续子序列 (Java 2022Q4 100分)

目录

华为OD机试 2023B卷题库疯狂收录中,刷题++点这里++

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

有N个正整数组成的一个序列,给定一个整数sum,求长度最长的的连续子序列使他们的和等于sum,返回该子序列的长度,如果没有满足要求的序列返回-1。

二、输入描述

第1行有N个正整数组成的一个序列。

第2行给定一个整数sum。

求最长连续子序列,只要遍历计算连续的子序列和等于更定值就可以了,记录最终最长子序列。

三、输出描述

长度最长的的连续子序列使他们的和等于sum,返回该子序列的长度,如果没有满足要求的序列返回-1。

四、解题思路

  1. 读取输入的序列和目标值sum;
  2. 将输入的序列转换为整数数组;
  3. 初始化最大子序列长度maxLen为-1;
  4. 遍历序列的每个元素,记当前元素索引为i:
    • 初始化子序列的和subSum为当前元素的值,计数器count为1;
    • 若subSum大于目标值sum,则跳过当前元素,继续遍历下一个元素;
    • 若subSum等于目标值sum,则更新maxLen为1和maxLen中的较大值;
    • 遍历从i+1到序列末尾的元素,记当前元素索引为j:
      • 将当前元素的值加到subSum中;
      • 将计数器count加1;
      • 若subSum大于目标值sum,则结束当前遍历;
      • 若subSum等于目标值sum,则更新maxLen为count和maxLen中的较大值,并结束当前遍历;
  5. 输出maxLen作为结果。

五、Java算法源码

java 复制代码
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String[] numsStr = scanner.nextLine().split(",");
    int n = scanner.nextInt();
    int len = numsStr.length;
    int[] nums = new int[len];
    for (int i = 0; i < len; i++) {
        nums[i] = Integer.parseInt(numsStr[i]);
    }

    // 子序列最大长度,默认-1
    int maxLen = -1;
    for (int i = 0; i < len-1; i++) {
        int sum = nums[i];
        if (sum > n) {
            continue;
        } else if (sum == n) {
            maxLen = Math.max(maxLen, 1);
        }
        int count = 1;
        for (int j = i+1; j < len; j++) {
            sum += nums[j];
            count++;
            if (sum > n) {
                break;
            } else if (sum == n) {
                maxLen = Math.max(maxLen, count);
                break;
            }
        }
    }
    System.out.println(maxLen);
}

六、效果展示

1、输入

1,2,3,4,2

2、输出

6

🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

相关推荐
wuminyu7 分钟前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
段一凡-华北理工大学11 分钟前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章08:多模态数据融合:让数据更聪明
人工智能·python·高炉炼铁·ai赋能·工业智能体·高炉炉温
万粉变现经纪人14 分钟前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
其实防守也摸鱼31 分钟前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
callJJ1 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
小郑加油2 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦2 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
.柒宇.2 小时前
AI掘金头条项目-K8s部署实战教程
python·云原生·容器·kubernetes·fastapi
观北海2 小时前
从 Sim2Sim 到 Sim2Real:以 ONNX 为核心的机器人策略实机落地全指南
python·机器人
wbs_scy2 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言