力扣——【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  
    #代码优化
相关推荐
2401_89807512几秒前
代码生成器优化策略
开发语言·c++·算法
郝学胜-神的一滴3 分钟前
人工智能发展漫谈:从专家系统到AIGC,再探深度学习核心与Pytorch入门
人工智能·pytorch·python·深度学习·算法·cnn·aigc
nananaij7 分钟前
【LeetCode-03 判断根结点是否等于子结点之和 python解法】
python·算法·leetcode
超级大只老咪10 分钟前
差分算法(java)
算法
逆境不可逃11 分钟前
【从零入门23种设计模式21】行为型之空对象模式
java·开发语言·数据库·算法·设计模式·职场和发展
超级大只老咪14 分钟前
输入(java)
算法
jing-ya17 分钟前
day51 图论part3
数据结构·算法·深度优先·图论
AI浩28 分钟前
UTPTrack:迈向简单统一的视觉跟踪令牌剪枝
算法·机器学习·剪枝
nananaij37 分钟前
【LeetCode-02 最小偶倍数 python解法】
python·算法·leetcode
倾心琴心38 分钟前
【agent辅助pcb routing coding学习】实践4 kicad pcb 核心类层次关系
算法·agent·pcb·eda·routing