看到一道面试题:
给定一个int型的数组,找出两个位置,使得数组被分为三段,每段之和相等。
问存不存在这样的两个位置?
注意两个位置上的数字不属于任何一段,要求时间复杂度为O(n)。
用双循环的话,可以很容易的做到,但是时间复杂度是O(n2),不满足要求。可以利用前缀和、后缀和的概念来解决。
用Java实现了一下,代码如下:
1 | package leetcode; |
输出:
1 | subSum: 10 |
看到一道面试题:
给定一个int型的数组,找出两个位置,使得数组被分为三段,每段之和相等。
问存不存在这样的两个位置?
注意两个位置上的数字不属于任何一段,要求时间复杂度为O(n)。
用双循环的话,可以很容易的做到,但是时间复杂度是O(n2),不满足要求。可以利用前缀和、后缀和的概念来解决。
用Java实现了一下,代码如下:
1 | package leetcode; |
输出:
1 | subSum: 10 |
Author:ligang
Publish date:November 23rd 2018, 7:51:10 pm
Update date:November 21st 2023, 7:24:46 pm
License:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可