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]))
  • 相关阅读:
    给asterisk写app供CLI调用
    C++实现raw_input
    CentOS6下配置本地用户访问vsftpd,并赋予写权限
    用SqlServer存储Asterisk的呼叫记录
    go 1发布了,之前写的代码不能运行了
    字符串分割(C++)
    asterisk事件监控
    git的简单使用
    用Python访问SqlServer
    像Python那样跑go1的代码(Windows下双击运行)
  • 原文地址:https://www.cnblogs.com/cong12586/p/14338690.html
Copyright © 2011-2022 走看看