文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 0 开始的整数数组 nums ,请你找到 最左边 的中间位置 middleIndex (也就是所有可能中间位置下标最小的一个)。

中间位置 middleIndex 是满足 nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1] 的数组下标。

如果 middleIndex == 0 ,左边部分的和定义为 0 。
类似的,如果 middleIndex == nums.length - 1 ,右边部分的和定义为 0 。

请你返回满足上述条件 最左边middleIndex ,如果不存在这样的中间位置,请你返回 -1 。

示例 1:
输入:nums = [2,3,-1,8,4]
输出:3
解释:
下标 3 之前的数字和为:2 + 3 + -1 = 4
下标 3 之后的数字和为:4 = 4示例 2:
输入:nums = [1,-1,4]
输出:2
解释:
下标 2 之前的数字和为:1 + -1 = 0
下标 2 之后的数字和为:0示例 3:
输入:nums = [2,5]
输出:-1
解释:
不存在符合要求的 middleIndex 。示例 4:
输入:nums = [1]
输出:0
解释:
下标 0 之前的数字和为:0
下标 0 之后的数字和为:0提示:
1 <= nums.length <= 100
-1000 <= nums[i] <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-middle-index-in-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 前缀和
class Solution {public:int findMiddleIndex(vector<int>& nums) {// sum[i]-nums[i] = allsum-sum[i] // 2*sum[i] = allsum+nums[i]vector<int> sum = nums;for(int i = 1; i < nums.size(); ++i){sum[i] += sum[i-1];}for(int i = 0; i < nums.size(); ++i){if(2*sum[i] == sum.back()+nums[i])return i;}return -1;}
};

8 ms 12.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1991. 找到数组的中间位置(前缀和)相关推荐

  1. Leetcode-5846.周赛 找到数组的中间位置

    题目 给你一个下标从 0 开始的整数数组 nums ,请你找到 最左边 的中间位置 middleIndex (也就是所有可能中间位置下标最小的一个). 中间位置 middleIndex 是满足 num ...

  2. js数组查找最接近_在JavaScript数组中找到最小元素的位置

    在JavaScript数组中找到最小元素的位置 注*  之前有篇文章介绍过数据遍历的性能比较: for in 比for loop慢至少20倍 ,这是另外一篇比较数组查找性能的例子,通过对手工/inde ...

  3. LeetCode 1300. 转变数组后最接近目标值的数组和(二分查找)

    1. 题目 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value , 使得将数组中所有大于 value 的值变成 value 后,数组的和 最接近 target (最接 ...

  4. LeetCode 1521. 找到最接近目标值的函数值(位运算)

    文章目录 1. 题目 2. 解题 1. 题目 Winston 构造了一个如上所示的函数 func .他有一个整数数组 arr 和一个整数 target ,他想找到让 |func(arr, l, r) ...

  5. 字符串数组最长公共前缀

    字符串数组最长公共前缀 Longest Common Prefix 给出字符串数组,查找这个数组中所有字符串的最长公共前缀 Write a function to find the longest c ...

  6. 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

    目录 一.今日心得感悟 1.数组从小到大排序 ①冒泡法--时间复杂度:O(nlogn) ②使用排序函数qsort--时间复杂度:O(nlogn) ③两端->中间(双指针法) --时间复杂度:O( ...

  7. 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...

  8. leetcode 658. 找到 K 个最接近的元素

    leetcode 658. 找到 K 个最接近的元素 题目描述: 给定一个排序好的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数.返回的结果必须要是按升序排 ...

  9. 搜索长度未知的有序数组java_java二分法实现在有序的数组中定位某数在数组中的位置...

    在一个有序的数组中,快速查找某值在有序数组中的位置,有人说这很容易啊,直接一个for循环遍历看看数组中哪个值与它相等,输出索引就ok了.这是个很直接的方法,但又没有想过但数组的长度很长时,你遍历一遍是 ...

最新文章

  1. python计算组合数_Python实现的排列组合计算操作示例
  2. url采集工具_大数据关键技术浅谈之大数据采集
  3. ios下使用rsa算法与php进行加解密通讯
  4. 解决:org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest
  5. PicoDet论文译读笔记
  6. java计算器用什么布局_求JAVA语言写的计算器的代码。用GridLayout布局。
  7. oracle12c分片应用场景,Oracle 12cR2数据库(Oracle12.2)新特性之四:Sharding 的增强...
  8. 鲲鹏920的服务器芯片,鲲鹏920芯片是什么芯片
  9. 在堆区开辟内存(动态内存的开辟)
  10. 快速理解深度信念网络
  11. 【蓝桥杯】【调和级数】
  12. iOS系统 查看设备序列号 获取UDID
  13. element ui 控件与布局学习(自用)
  14. TPMS胎压芯片选择:英飞凌SP370、英飞凌SP40、飞思卡尔FXTH87
  15. 老司机的奇怪noip模拟T3-zhugeliang
  16. 9.Unity2D 横版 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡
  17. Python_Nine
  18. 软件外包项目管理7 - 项目监控
  19. Ubuntu20.04无法开机/左上角小横杠闪烁/升级系统内核后与显卡驱动不匹配的问题
  20. 称重软件地磅称重在实际应用中需要注意哪些?

热门文章

  1. 猿辅导python面试_猿辅导面试经历—个人感受
  2. vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元
  3. CentOS7 安装nginx
  4. 异常检测算法之IForest
  5. Random Forest算法参数解释及调优
  6. java futuretask 实例_java 使用Callable+FutureTask获取执行结果
  7. 带通滤波器作用和用途_带通滤波器作用
  8. django入门项目图书管理
  9. HDU 2859 Phalanx(二维DP)
  10. 云平台需要开发的底层功能