zoukankan      html  css  js  c++  java
  • 724 寻找数组的中心索引

    from typing import List
    class Solution:
    # 错误的想法,刚开始想的是使用双指针的方法来计算左右两边的和,
    # 但是没有考虑到会有负数的存在,所有这个方法,行不通。
    def pivotIndex1(self, nums: List[int]) -> int:
    if len(nums) <= 1:
    return -1
    left,right = 0,len(nums) - 1
    left_num,right_num = nums[left],nums[right]
    while left < right:
    if left_num > right_num:
    right -= 1
    right_num += nums[right]
    elif left_num < right_num:
    left += 1
    left_num += nums[left]
    else:
    left += 1
    right -= 1
    left_num += nums[left]
    right_num += nums[right]
    print(left,right)
    if left_num == right_num and left == right:
    return left
    else:
    return -1
    # 那就是先算出数组的总和,然后减去左边或者右边的和,判断是否有相等的时候。
    def pivotIndex(self, nums: List[int]) -> int:
    # 求出数组的长度。
    length = len(nums)
    # 如果数组为空,直接返回。
    if length == 0:return -1
    # 求出数组所有数的和,定义左侧和变量。
    sum_num = sum(nums)
    sum_left = 0
    # 遍历数组,然后进行求和、
    for i in range(length):
    # 左侧数组求和。
    sum_left += nums[i]
    # 判断是否为中心索引。
    if sum_left - nums[i] == sum_num - sum_left:
    return i
    return -1
    A = Solution()
    print(A.pivotIndex([1, 7, 3, 6, 5, 6]))
    print(A.pivotIndex([1]))
    print(A.pivotIndex([-1,-1,-1,-1,-1,0]))
  • 相关阅读:
    App如何选择移动广告平台,开发者2
    mouseover与mouseenter与mousemove差额mouseout与mouseleave差额
    JFinal 的源代码超具体的分析DB+ActiveRecord
    Vim经常使用技巧总结1
    2015第4周四网摘
    Java任务调度
    2015第4周二网摘
    2015第4周一
    2015第三周日
    转SpringSided代码规范遵循
  • 原文地址:https://www.cnblogs.com/cong12586/p/14338690.html
Copyright © 2011-2022 走看看