找到数组的中间位置


Submit solution

Points: 300
Time limit: 1.0s
Memory limit: 4M

Author:
Problem type
Allowed languages
C, C++

leetcode 1991

给你一个下标从 0 开始的整数数组 nums。请你找出一个满足下述条件的下标 pivot: 将 nums 分成两部分:nums[0] 到 nums[pivot - 1] 的所有元素之和,和 nums[pivot + 1] 到 nums[n - 1] 的所有元素之和 相等。

第一行输入一个整数n,表示数组有n个元素
第二行输入n个整数,空格隔开。

输出 满足条件的 pivot 数组下标
换句话说:

sum(nums[0..pivot-1]) == sum(nums[pivot+1..n-1])

返回 最左边的那个 pivot 下标。如果不存在这样的下标,返回 -1。

示例 1:

输入:

6
1 7 3 6 5 6

输出:

3
解释:
nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
nums[4] + nums[5] = 5 + 6 = 11
示例 2:

输入:

3
1 2 3

输出:

-1
解释:

不存在满足条件的下标 pivot。

示例 3:

输入:

3
2 1 -1

输出:

0
解释:

nums[1] + nums[2] = 1 + (-1) = 0
左边没有元素,所以视为和为 0。

数据制约

\(1 \le nums.length \le 10^5\)
\(-1000 \le nums[i] \le 1000\)


Comments

There are no comments at the moment.