我参加了Codility.com演示测试.
我的程序为其中一个单元测试返回了错误的值:
TEST extreme_large_numbers具有极大数字的序列测试算术溢出.
时间0.056秒.
结果错误答案得到2,但它不是平衡点,总和[0..1] = 4294967294,总和[3..3] = - 2
好吧,因为我最初在代码中看不到问题,所以我尝试在Visual Studio项目中运行它.然后编译器发现它4294967294太大了int.它需要是一个uint或一个long.所以我改变了一切long,它在VS中工作.
但是,演示测试不允许您将函数输入/返回类型更改为long.
有人可以解释一下这个程序如何可以4294967294作为一个数据值正常工作int[]吗?

您只需要在计算结果时考虑大范围,最终结果将不会超出范围.似乎您的解决方案效率不高,您可以在此处获得线性运行时.
编辑:您可以查看修订历史记录,查看运行速度快且得分为100的代码.;-)