力扣刷题——寻找数组的中心索引

518 阅读3分钟

「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

☀ 前言 ☀

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

第一遍,不求最优解,但求能过!!!

作者简介

大家好,我是布小禅,一个尽力让无情的代码变得生动有趣的IT小白,很高兴能偶认识你,关注我,每天坚持学点东西,我们以后就是大佬啦!

💗 一、题目描述 💗

题目描述
\color{red}{} 给你一个整数数组 nums ,请计算数组的 中心下标 。
数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。
如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。
如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。

示例 1:
输入:nums = [1, 7, 3, 6, 5, 6]
输出:3
解释: 中心下标是 3 。
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。
示例 2:
输入:nums = [1, 2, 3]
输出:-1
解释:
数组中不存在满足此条件的中心下标。
示例 3:
输入:nums = [2, 1, -1]
输出:0
解释:
中心下标是 0 。
左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),
右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0 。

提示:
1 <= nums.length <= 104
$\color{red}{}$ -1000 <= nums[i] <= 1000

作者:力扣 (LeetCode)

链接:leetcode-cn.com/leetbook/re…
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

💁 二、题目解析 💁

不要被题目迷惑 先把整个数组的和求出来 遍历数组,求和 然后观察整个数组的和与所求和的关系 观察发现 所求和的二倍=总和与当前元素的和 所以判断条件有了 开始程序

🏃 三、代码 🏃

☁️ 1️⃣. python ☁️

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        _sum = sum(nums)                        # 计算数组总和
        sum1 = 0                                # 初始化左侧和
        for i in range(len(nums)):              # 开始循环
            sum1+=nums[i]                       # 求左侧和
            if sum1*2==_sum+nums[i]: return i   # 判断
        return -1                               # 如果循环完,则说明不存在中心节点

❄️ 2️⃣. C# ❄️

public class Solution {
    public int sum(int[] arr){
        // 求和函数
        int sum = 0;
        foreach (int x in arr)
        {
            sum+=x;
        }
        return sum;
    }
    public int PivotIndex(int[] nums) {
        int _sum = sum(nums);                       // 计算数组总和
        int sum1 = 0;                               // 初始化左侧和
        for (int i=0;i<nums.Length;i++)             // 开始循环
        {
            sum1+=nums[i];                          // 求左侧和
            if (sum1*2==_sum+nums[i]) return i;     // 判断
        }
        return -1;                                  // 如果循环完,则说明不存在中心节点
    }
}

🌔 结语 🌔

坚持最重要,每日一题必不可少!

期待你的关注和督促!