-
首先要有一个思路。
定义一个数组: int[] array = {6,4,3,2,-4,5}; 如果要求下标2到5之间的数据之和(但是每个下标对应的数据是从下标零到下标的),怎么样写才是最快的呢?
如果是循环去找指定下标并且去做判断是否到了开始下标,和结束下标。然后把这些之间的数据加起来求和也是可以点,但是它不是最快的。 -
最佳的解决思路。
借助一个其他数组help[],用于存储array的下标数据之和,放到一个新数组中,然后用于求取数据之和。怎么放呢?下面这样放。
-
有了这个求和后的help数组之后的思路。
因为是求两个下标之间的数据之和,就是会有两个下标的L,R。
所以我们以后每次求取的时候就去到help数组中拿下标为R的数据之和这个其实是0到R的数据之和,在去Help去拿L-1的数据之和 这个其实是0到L-1的下标之和。 这样用R的数据减去L-1的数据就是 L到R下标数据之和。
看不懂没关系,都是代码人,看代码吧。
//算法求取数据 ,2022.3.17 看算法课第一题,根据思路编写的代码
@Test
public void sumIndexNum(){
/**
* 解决问题: 定义一个数组,写一个方法 用于求取指定下标到指定下标 的数据,怎么做才能最快
* 思路:1、借用另一个数组存储 0-指定下标数据之和。
*/
long start = System.currentTimeMillis();
int