首页 > 其他分享 >计算一个数组中L位置到R位置的数组元素之和

计算一个数组中L位置到R位置的数组元素之和

时间:2022-12-13 00:34:54浏览次数:37  
标签:位置 int 元素 数组 preSum public

计算一个数组中L位置到R位置的数组元素之和

解题思路一:

我们很容易想到遍历数组,遍历数组L位置到R位置的元素并相机得到和

代码:

public class PreSum {

	public static class RangeSum1 {

		private int[] arr;

		public RangeSum1(int[] array) {
			arr = array;
		}
		//常规操作就是依次遍历L到R位置的元素并且相加得到和
		public int rangeSum(int L, int R) {
			int sum = 0;
			for (int i = L; i <= R; i++) {
				sum += arr[i];
			}
			return sum;
		}

	}

解题思路二:

我们可以选择重新定义一个数组作为前缀数组之和,这个数组记录每一位数组元素与之前面数组元素之和,这样如果是计算原来数组的0-R位置的数组元素之和只需要返回前缀数组的R位置元素即可,当要计算原来数组的L-R位置元素数组之和只需要返回前缀数组的R位置元素-L-1位置元素的差即可得到。

代码:

/**
 * 目的:计算一个数组的l到r位置的数组元素之和
 * 方法:定义一个与原来数组等长的数组作为前缀和数组
 */
public class PreSumArray {
    public static class RangeSum{
        public static void preSumArray(int[] array){
            //1.记录数组的长度
            int length = array.length;
            //2.定有一个与原来数组等长的数组
            int[] preSum = new int[length];
            //2.1原来数组的第一位赋值给新数组的第一位
            preSum[0] = array[0];
            //3.循环原来的数组并且与现在数组的i-1位置的元素与原来数组的i位置的元素相加
            for (int i = 1; i < length; i++) {
                preSum[i] = preSum[i-1] + array[i];
            }
            //至此在新的数组中就记录了原来数组的数组元素之和
        }

        public int rangeArraySum(int[] preSum,int l,int r){
            return l == 0 ? preSum[r]:preSum[r] - preSum[l - 1];
        }
    }
}

标签:位置,int,元素,数组,preSum,public
From: https://www.cnblogs.com/ygstudy/p/16977513.html

相关文章

  • 返回数组中的局部最小
    返回数组中的局部最小局部最小的定义:所谓局部最小就是比它右边小同时也要比它左边小,如果是数组的第一个元素那么只需要比它下一个元素小也就是局部最小,如果是最后一个......
  • 第一百一十二篇: JS数组Array(一)数组基本用法
    好家伙, 1.数组 Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大区别。跟其他语言中的数组一样,ECMAScript数组也是一组有序的......
  • Selenium12--元素基本操作
    文本框和文本域点击:click()清空:clear()输入:send_keys("数据")保留原内容,追加输入文本域输入换行时使用转义字符\n来表示获得属性值get_attribut......
  • 代码随想录训练营第六天|LeetCode242有效的字母异位词、LeetCode349两个数组的交集、L
    LeetCode242有效的字母异位词tag:#哈希表#数组leetcode地址:242. 有效的字母异位词代码://通过数组的方式对每个字母进行统计数量,然后遍历数组,查看是否每一项都为0f......
  • java 数组实现队列
     算法题用数组实现队列,三个函数,分别是添加add(),出队poll()和获取队中的元素个数getSize()当队的元素满的时候进行二倍的扩容。classmyqueue{privateint[]date;......
  • 数据结构之数组
    1.数组实现数组的特点:内存是连续的,即物理地址是连续的。优点:随机访问的时间复杂度为O(1);末尾位置增加元素的时间复杂度为O(1);访问元素前后相邻位置的元素非常方便......
  • 【LeetCode】二分法--剑指 Offer 53 - I. 在排序数组中查找数字 I
    点击直达题目内容统计一个数字在排序数组中出现的次数。示例示例1:输入:nums=[5,7,7,8,8,10],target=8输出:2示例2:输入:nums=[5,7,7,8,8,10],target......
  • 27. 移除元素
    27.移除元素力扣题目链接我的代码:左右指针交换,O(n)classSolution{publicintremoveElement(int[]nums,intval){if(nums.length==0){......
  • 数组的活学活用(一)
    概览数组我们知道,是一种有序连续的数据结构,随机访问的效率高。之所以随机访问的效率高,就是因为它的每个值都有下标,可以根据下标直接找到我们想要的值。 既然我们已经......
  • Shell数组基本概述
    1.数组基本概述01.什么是数组?数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值。02.数组的分类Shell数组分为普通数组和关联数组。普通数组:只能使......