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 表示.