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

举报
布小禅 发表于 2021/08/23 13:19:32 2021/08/23
【摘要】 算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

在这里插入图片描述

☀️ 前言 ☀️

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

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

🙀 作者简介 🙀

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

📢
这是我刷第 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;                                  // 如果循环完,则说明不存在中心节点
    }
}

🌔 结语 🌔

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

期待你的关注和督促!:stuck_out_tongue:

在这里插入图片描述

投票

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。