LeetCode刷题-简单-寻找数组的中心索引
☀️ 前言 ☀️
算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!
第一遍,不求最优解,但求能过!!!
🙀 作者简介 🙀
大家好,我是布小禅,一个尽力让无情的代码变得生动有趣的IT小白,很高兴能偶认识你,关注我,每天坚持学点东西,我们以后就是大佬啦!
📢
这是我刷第 25/100 道力扣简单题
💗 一、题目描述 💗
题目描述
给你一个整数数组 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 。
作者:力扣 (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:
投票
- 点赞
- 收藏
- 关注作者
评论(0)