LeetCode简单题之寻找数组的中心下标

news/2025/3/15 5:00:27/

题目

给你一个整数数组 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 <= 10^4
-1000 <= nums[i] <= 1000
来源:力扣(LeetCode)

解题思路

  对于这样比较直白的题可以先直接用代码来翻译题目,然后再看看是否能够优化。

class Solution:def pivotIndex(self, nums: List[int]) -> int:for i in range(len(nums)):if sum(nums[0:i])==sum(nums[i+1:]):return ireturn -1

在这里插入图片描述
  通过以上的代码,不难发现,其实每次计算sum的时候我们总要重复计算前面已经算过的值,这样就比较浪费算力。数组中某一个元素两侧的和相等,也就是当我们减掉这个元素然后将整个数组的和除以二那么就是一侧的和,这样做至少会减少一半的多余计算,尽管我们还有一半的计算是重复的。

class Solution:def pivotIndex(self, nums: List[int]) -> int:total=sum(nums)  #总和s=0  #从左边累加for i in range(len(nums)):if 2*s+nums[i]==total:  #如果左侧的值的二倍加上中间的枢轴值等于总和则找到中间位置return is+=nums[i]return -1

在这里插入图片描述


http://www.ppmy.cn/news/606221.html

相关文章

AWS概述

Aamzon Web Services提供了一系列全球范围的云产品&#xff0c;包括计算、存储、数据库、分析、网络、移动、开发工具、管理工具、IoT、安全和企业应用&#xff1a;按需交付、及时可用、采用随用随付的定价模式。你可以畅享200多种服务&#xff0c;从数据仓库到部署工具&#x…

PyTorch 学习笔记(四):权值初始化的十种方法

pytorch在torch.nn.init中提供了常用的初始化方法函数&#xff0c;这里简单介绍&#xff0c;方便查询使用。 介绍分两部分&#xff1a; 1. Xavier&#xff0c;kaiming系列&#xff1b; 2. 其他方法分布 Xavier初始化方法&#xff0c;论文在《Understanding the difficulty of t…

Linux学习(4)——Linux目录结构

基本介绍目录解释基本介绍 Linux的文件系统是采用层级式的树状目录结构&#xff0c;在这个结构中的最上层是根目录"/",然后在此目录下面再创建其他的目录深刻理解Linux树状文件目录是很重要的在Linux世界里面&#xff0c;一切皆文件 目录解释 下面内容摘抄于W3Cscho…

LeetCode简单题之词典中最长的单词

题目 给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词&#xff0c;该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案&#xff0c;则返回答案中字典序最小的单词。 若无答案&#xff0c;则返回空字符串。 示例 1&#xff1a; 输…

激光雷达与自动驾驶

激光雷达与自动驾驶 激光雷达&#xff08;英文&#xff1a;Laser Radar&#xff09;&#xff0c;是以发射激光束探测目标的位置、速度等特征量的雷达系统。其工作原理是向目标发射探测信号&#xff08;激光束&#xff09;&#xff0c;然后将接收到的从目标反射回来的信号&#…

Pytorch源码与运行原理浅析--网络篇(一)

前言 申请的专栏开通了&#xff0c;刚好最近闲下来了&#xff0c;就打算开这个坑了hhhhh 第一篇就先讲一讲pytorch的运行机制好了。。。 记得当时刚刚接触的时候一直搞不明白&#xff0c;为什么自己只是定义了几个网络&#xff0c;就可以完整的训练整个模型&#xff0c;它背后的…

LeetCode简单题之合并两个有序数组

题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&#xff0c;合并后…

二叉树层序遍历相关题目

前言102.二叉树的层序遍历题目描述前提知识代码107二叉树的层序遍历II题目描述代码199.二叉树的右视图题目描述思路代码637.二叉树的层平均值题目描述思路代码429.N叉树的层序遍历题目描述思路代码515.在每个树行中找最大值题目描述思路代码116.填充每个节点的下一个右侧节点指…