LeetCode刷题-简单-寻找数组的中心索引

Posted 布小禅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题-简单-寻找数组的中心索引相关的知识,希望对你有一定的参考价值。

☀️ 前言 ☀️

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

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

🙀 作者简介 🙀

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

📢 博客主页:❤布小禅❤
📢 作者专栏:
❤Python❤
❤Java❤

❤力扣题❤

这是我刷第 25/100 道力扣简单题

💗 一、题目描述 💗

题目描述
\\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)

链接:https://leetcode-cn.com/leetbook/read/array-and-string/yf47s/
来源:力扣(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;                                  // 如果循环完,则说明不存在中心节点
    }
}

🌔 结语 🌔

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

期待你的关注和督促!😛

投票

以上是关于LeetCode刷题-简单-寻找数组的中心索引的主要内容,如果未能解决你的问题,请参考以下文章

1.LeetCode刷题-寻找数组的中心索引

leetcode刷题48.寻找数组的中心下标——Java版

JS leetcode 寻找数组的中心索引 题解分析

JS leetcode 寻找数组的中心索引 题解分析

LeetCode724 寻找数组的中心索引

力扣(LeetCode)寻找数组的中心索引 个人题解