OD 阿里巴巴找黄金宝箱

博客涉及算法与Java开发语言相关内容,虽未给出具体内容,但从标签可知围绕Java进行算法方面的开发,可能包含算法设计、实现等信息技术关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了
黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱
请帮阿里巴巴找到黄金宝箱,输出第一个满足条件的黄金宝箱编号,
输入描述:
箱子上贴的数字列表,使用逗号分隔,例如1-10。
宝箱的数量不小于1个,不超过10000
宝箱上贴的数值范围不低于-1000,不超过1000
输出描述:
第一个黄金宝箱的编号
补充说明:
示例1
输入:
2,5,-1,8,6
输出:
3
说明:
下标3之前的数字和为:2 + 5 + -1 = 6
下标3之后的数字和为:6 = 6
示例2
输入:
8,9
输出:
-1
说明:
不存在符合要求的位置
示例3
输入:
11
输出:
0
说明:
下标0之前的数字和为:0
下标0之后的数字和为:0
public class 阿里巴巴找黄金宝箱 {

    public static int findGoldBox(int[] boxes) {
        int totalSum = 0;
        for (int box : boxes) {
            totalSum += box;
        }

        int leftSum = 0;
        for (int i = 0; i < boxes.length; i++) {
            totalSum -= boxes[i];

            if (leftSum == totalSum) {
                return i;
            }

            leftSum += boxes[i];
        }

        return -1; // 如果没有符合条件的黄金宝箱,返回-1
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入箱子上贴的数字列表,使用逗号分隔:");
        String input = scanner.nextLine();
        String[] boxStr = input.split(",");

        int[] boxes = new int[boxStr.length];
        for (int i = 0; i < boxStr.length; i++) {
            boxes[i] = Integer.parseInt(boxStr[i]);
        }

        int goldBoxIndex = findGoldBox(boxes);
        System.out.println("第一个黄金宝箱的编号为:" + goldBoxIndex);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值