java 算法 求一个数组 随意两个下标之间的数据之和 (但是每个下标对应的数据是从下标零到下标的)

本文探讨如何快速计算数组中两个下标之间的元素之和,避免使用循环进行判断。通过创建一个新的数组help[]存储原数组的累积和,然后利用help[],通过R位置的累积和减去L-1位置的累积和,即可得到L到R的区间和。这种方法提高了计算效率。
摘要由CSDN通过智能技术生成
  1. 首先要有一个思路。
    定义一个数组: int[] array = {6,4,3,2,-4,5}; 如果要求下标2到5之间的数据之和(但是每个下标对应的数据是从下标零到下标的),怎么样写才是最快的呢?
    如果是循环去找指定下标并且去做判断是否到了开始下标,和结束下标。然后把这些之间的数据加起来求和也是可以点,但是它不是最快的。

  2. 最佳的解决思路。
    借助一个其他数组help[],用于存储array的下标数据之和,放到一个新数组中,然后用于求取数据之和。怎么放呢?下面这样放。
    在这里插入图片描述

  3. 有了这个求和后的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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值