724. Find Pivot Index
Если задан 数组 целых чисел nums, вычислите поворотный индекс этого 数组а. Поворотный индекс - это индекс, при котором сумма всех чисел строго слева от индекса равна сумме всех чисел строго справа от индекса. Если индекс находится на левом краю 数组а, то сумма слева равна 0, так как слева нет elementов. Это относится и к правому краю 数组а. returnsся самый левый поворотный индекс. Если такого индекса не существует, returnsся -1.
示例:
Input: nums = [1,7,3,6,5,6]
Output: 3
C# 解法
匹配/原始public class Solution {
public int PivotIndex(int[] nums) {
int totalSum = 0;
foreach (int num in nums) {
totalSum += num;
}
int leftSum = 0;
for (int i = 0; i < nums.Length; i++) {
if (leftSum == totalSum - leftSum - nums[i]) {
return i;
}
leftSum += nums[i];
}
return -1;
}
}
C++ 解法
自动草稿,提交前请检查#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int PivotIndex(vector<int>& nums) {
int totalSum = 0;
foreach (int num in nums) {
totalSum += num;
}
int leftSum = 0;
for (int i = 0; i < nums.size(); i++) {
if (leftSum == totalSum - leftSum - nums[i]) {
return i;
}
leftSum += nums[i];
}
return -1;
}
}
Java 解法
匹配/原始public class Solution {
public int pivotIndex(int[] nums) {
int totalSum = 0;
for (int num : nums) {
totalSum += num;
}
int leftSum = 0;
for (int i = 0; i < nums.length; i++) {
if (leftSum == totalSum - leftSum - nums[i]) {
return i;
}
leftSum += nums[i];
}
return -1;
}
}
JavaScript 解法
匹配/原始var pivotIndex = function(nums) {
let totalSum = nums.reduce((a, b) => a + b, 0);
let leftSum = 0;
for (let i = 0; i < nums.length; i++) {
if (leftSum === totalSum - leftSum - nums[i]) {
return i;
}
leftSum += nums[i];
}
return -1;
};
Python 解法
匹配/原始def pivotIndex(nums):
total_sum = sum(nums)
left_sum = 0
for i, num in enumerate(nums):
if left_sum == (total_sum - left_sum - num):
return i
left_sum += num
return -1
Go 解法
匹配/原始package main
func pivotIndex(nums []int) int {
totalSum := 0
for _, num := range nums {
totalSum += num
}
leftSum := 0
for i, num := range nums {
if leftSum == totalSum - leftSum - num {
return i
}
leftSum += num
}
return -1
}
func main() {
nums := []int{1, 7, 3, 6, 5, 6}
result := pivotIndex(nums)
println(result)
}
Algorithm
Вычислите сумму всех elementов 数组а.
Пройдите по 数组у, вычисляя текущую сумму elementов слева и проверяя, равна ли она разности между общей суммой и текущей суммой справа.
Если текущий индекс удовлетворяет условию, return его; если нет, продолжайте проверку. Если такой индекс не найден, return -1.
😎
Vacancies for this task
活跃职位 with overlapping task tags are 已显示.