华为OD机考--阿里巴巴黄金箱

题目内容

贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子每个箱子上面贴有一个数字箱子中可能有一个黄金宝箱。

黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字之和;

一个箱子左边部分的数字和定义为0: 最后一个箱子右边部分的数字和定义为0.

帮阿里巴巴找到黄金宝箱,输出第一个满足条件的黄金宝箱编号,如果不存在黄金宝箱,请返回-1。

输入描述

箱子上贴的数字列表,使用逗号分隔,例如1,-1,0

宝箱的数量不小于1个,不超过10000 宝箱上贴的数值范围不低于-1000,不超过1000

输出描述

第一个黄金宝箱的编号

样例

输入

复制代码
2,5,-1,8,6

输出

复制代码
3

说明

下标3之前的数字和为:2+5+-1=6

下标3之后的数字和为:6=6

输入

复制代码
8,9

输出

复制代码
-1

说明

不存在符合要求的位置

输入

复制代码
11

输出

复制代码
0

说明

下标0之前的数字和为:0

下标0之后的数字和为:0

java 复制代码
public class GoldChest {
    public static void main(String[] args) {
        Scanner sc =  new Scanner(System.in);
        int [] num = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        if (num.length == 1){
            System.out.println(0);
            return;
        }
        int end = equal(num,1);
        System.out.println(end);
    }

    //单指针+循环遍历
    public static int equal(int [] num, int i){
        Boolean end = false;
        while (!end && i < num.length) {
            int before = 0;
            int after = 0;
            for (int j = 0; j < num.length; j++) {
                if (j < i) {
                    before += num[j];
                } else if (j > i) {
                    after += num[j];
                }
            }
            if (before == after) {
                end = true;
            } else {
                i++;
            }
        }
        if (!end) {
            return -1;
        }
        return i;
    }
}
相关推荐
心灵宝贝几秒前
Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)
java·开发语言·macos
ta是个码农3 分钟前
Mysql——日志
java·数据库·mysql·日志
董董灿是个攻城狮4 分钟前
5分钟搞懂大模型微调的原始能力退化问题
算法
今***b15 分钟前
Python 操作 PPT 文件:从新手到高手的实战指南
java·python·powerpoint
David爱编程17 分钟前
volatile 关键字详解:轻量级同步工具的边界与误区
java·后端
fatfishccc3 小时前
Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
java·spring·ajax·mvc·ssm·过滤器·拦截器interceptor
没有bug.的程序员3 小时前
MyBatis 初识:框架定位与核心原理——SQL 自由掌控的艺术
java·数据库·sql·mybatis
执键行天涯3 小时前
从双重检查锁定的设计意图、锁的作用、第一次检查提升性能的原理三个角度,详细拆解单例模式的逻辑
java·前端·github
程序员江鸟3 小时前
Java面试实战系列【JVM篇】- JVM内存结构与运行时数据区详解(私有区域)
java·jvm·面试
架构师沉默3 小时前
Java 状态机设计:替代 if-else 的优雅架构
java·程序员·架构