求下标(i~j)的元素和 (Python)
第一种方法
def func_1(i, j, nums):
if i > j:
return False
presum = 0
if j < len(nums):
while i <= j:
presum += nums[i]
i += 1
return presum
else:
return False
第一种方法简单直接,我的思路是直接找到 i~j 的元素进行求和。当最右侧的下标超出范围或者当 i>j 情况下,函数返回False
print(func_1(1, 3, [4, 3, 6, 5, 3]))
14
调用函数,取 i 和 j 分别为 1 和 3 ;输出答案 14
第二种方法
def func_2(l, r, nums):
if l > r or r >= len(nums):
return False
presum = [0] * (len(nums) + 1)
for i in range(1, r + 2):
presum[i] = presum[i - 1] + nums[i - 1]
result = presum[r + 1] - presum[l]
return result
第二种方法较为复杂,思路是 i~j 的元素和等于前 j 项和 减去 前 i 项和 。需要注意的是函数构造了以0为开始元素的数组presum,其作用是记录序列的累加和。
print(func_2(3,5, [7,2,4,6,1,8]))
15
调用函数,取 i 和 j 分别为 3 和 5 ;输出答案 15