寻找数组的中心索引(我好菜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) 编辑 收藏 举报