力扣——【1991. 找到数组的中间位置】

#前缀和思想

主要利用递推的思想,将数列的前n!项和存到一个新数列中,递推公式可能需要自己推导

一个数列的值等于另一个数列的第i个元素加上这一个数列的第i-1个元素

同时需要初始化这个数列的第一个元素=另一个数列的第一个元素

#思路

本题中,使用前缀和代替sum()函数,以减少时间复杂度

但是使用前缀和,需要新建一个数列,此过程中存在middleIndex越界问题,需小心

#递推思想

python 复制代码
class Solution:
    def findMiddleIndex(self, nums: List[int]) -> int:
      n=len(nums)
      s=[0 for i in range(n)]#相当于申请数组内存
      s[0]=nums[0]
      for i in range(1,n):
        s[i]=s[i-1]+nums[i]
      for middleIndex in range(n):
        a=0 
        if middleIndex!=0:
            a=s[middleIndex-1]#注意边界
        b=s[n-1]-s[middleIndex]
        if a==b:
        # if sum(nums[:middleIndex])==sum(nums[middleIndex+1:]):
            return middleIndex
      return-1  
    #代码优化
相关推荐
THMAIL39 分钟前
机器学习从入门到精通 - 数据预处理实战秘籍:清洗、转换与特征工程入门
人工智能·python·算法·机器学习·数据挖掘·逻辑回归
Kevinhbr1 小时前
CSP-J/S IS COMING
数据结构·c++·算法
蕓晨1 小时前
set的插入和pair的用法
c++·算法
THMAIL2 小时前
深度学习从入门到精通 - AutoML与神经网络搜索(NAS):自动化模型设计未来
人工智能·python·深度学习·神经网络·算法·机器学习·逻辑回归
金古圣人2 小时前
hot100 滑动窗口
数据结构·c++·算法·leetcode·哈希算法
kebeiovo2 小时前
算法-二叉树的序列化与反序列化
算法
蒹葭玉树2 小时前
【C++上岸】C++常见面试题目--算法篇(第二十期)
c++·算法·面试
JJJJ_iii2 小时前
【左程云算法03】对数器&算法和数据结构大致分类
数据结构·算法·分类
轮到我狗叫了2 小时前
牛客.小红的子串牛客.kotori和抽卡牛客.循环汉诺塔牛客.ruby和薯条
java·开发语言·算法
高山有多高2 小时前
详解文件操作
c语言·开发语言·数据库·c++·算法