关注
分数组的用贪心,AC了,忽略我代码中用的前缀和(刚开始以为是直接切数组,所以用了个前缀和,搞错了,但是那样也过了85%,迷~) private static void run3() {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
long[] num = new long[N + 1];
long[] preSum = new long[N + 1];
preSum[0] = 0;
for (int i = 1; i <= N; ++i) {
num[i] = scanner.nextLong();
preSum[i] = preSum[i - 1] + num[i];
}
Arrays.sort(num);
for (int i = 1; i <= N; ++i)
preSum[i] = preSum[i - 1] + num[i];
long tmp1 = num[N];
long tmp2 = 0;
for (int i = N - 1; i > 0; --i) {
int t = i;
while (i > 0 && tmp1 >= tmp2) {
tmp2 += num[i];
--i;
}
while (i > 0 && tmp1 <= tmp2) {
tmp1 += num[i];
--i;
}
if (t != i)
i++;
}
System.out.println(Math.abs(tmp1 - tmp2));
// 下面的代码过了85%
// long res = Long.MAX_VALUE;
// for (int i = 1; i < N; ++i) {
// res = Math.min(res, Math.abs(preSum[N] - preSum[i] - preSum[i]));
// }
// System.out.println(res);
scanner.close();
}
查看原帖
点赞 2
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
150561次浏览 2560人参与
# 你面试体验感最差/最好的公司 #
3842次浏览 68人参与
# 重来一次,你会对开始求职的自己说 #
3315次浏览 75人参与
# 一人说一个提前实习的好处 #
3999次浏览 79人参与
# 实习没事做是福还是祸? #
8928次浏览 139人参与
# 团建是“福利”还是是 “渡劫” #
4330次浏览 113人参与
# 秋招落幕,你是He or Be #
3840次浏览 83人参与
# 今年你最想重开的一场面试是? #
1609次浏览 27人参与
# 你小心翼翼的闯过多大的祸? #
7445次浏览 110人参与
# 工作中听到最受打击的一句话 #
2932次浏览 62人参与
# 大厂VS公务员你怎么选 #
71739次浏览 662人参与
# 实习简历求拷打 #
30999次浏览 301人参与
# 应届生进小公司有什么影响吗 #
109255次浏览 1116人参与
# 如何排解工作中的焦虑 #
244490次浏览 2249人参与
# 比亚迪工作体验 #
70646次浏览 257人参与
# 秋招结束之后的日子 #
113957次浏览 1044人参与
# 投格力的你,拿到offer了吗? #
156185次浏览 835人参与
# 找不到实习会影响秋招吗 #
1401535次浏览 13652人参与
# 扒一扒那些奇葩实习经历 #
140619次浏览 1151人参与
# 互联网公司爆料 #
158655次浏览 724人参与
