dmndxld

码不停题

寻找数组的中心索引(我好菜0

题目:给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。

我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。

如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。

 

说明:

  • nums 的长度范围为 [0, 10000]
  • 任何一个 nums[i] 将会是一个范围在 [-1000, 1000]的整数

代码:

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        
        le,ri = 0,0
        lens = len(nums)
        if lens <= 0 :
            return -1
        sums = sum(nums)

        for i in range(lens):
            if le + nums[i] == sums - le:
                return i
            le += nums[i]
        return -1
import copy
class Solution(object):
    def pivotIndex(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums: return -1 # 空list情况
        sum_left = 0
        sum_right = sum(nums)-nums[0] 
        if sum_left == sum_right: return 0 # 初始化:下标0为中心索引
        for i in range(1,len(nums)): # 扫描,计算左边和是否等于右边和
            sum_left += nums[i-1]
            sum_right -= nums[i]
            if sum_left == sum_right:
                return i
        return -1

 

 

菜的原因:

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        sum1=0
        sum2=0
        a=0
        if(len(nums)<=0):
            return -1
        for i in range(len(nums)):
            sum1+=nums[i]
            num.reverse()
            t=len(nums)-i-2
            for j in range(t):
                sum2+=nums[j]
            if(sum1==sum2):
                    a=i
            if(a==0):
                a=-1
            nums.reverse()
            sum1=0
            sum2=0
        return a

我总是想用颠倒相加的方法去计算,别管减什么,肯定都不对了,因为最后i会遍历全部,颠倒后取值要分情况,gg

posted on 2019-04-28 20:36  imyourterminal  阅读(343)  评论(0编辑  收藏  举报

导航