题目内容
贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从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文章来源:https://www.toymoban.com/news/detail-621109.html
下标0之后的数字和为:0文章来源地址https://www.toymoban.com/news/detail-621109.html
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;
}
}
到了这里,关于华为OD机考--阿里巴巴黄金箱的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!