724. Find Pivot Index
Если задан Array целых чисел nums, вычислите поворотный индекс этого Arrayа. Поворотный индекс - это индекс, при котором сумма всех чисел строго слева от индекса равна сумме всех чисел строго справа от индекса. Если индекс находится на левом краю Arrayа, то сумма слева равна 0, так как слева нет elementов. Это относится и к правому краю Arrayа. returnsся самый левый поворотный индекс. Если такого индекса не существует, returnsся -1.
Beispiel:
Input: nums = [1,7,3,6,5,6]
Output: 3
C# Lösung
zugeordnet/originalpublic 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++ Lösung
Auto-Entwurf, vor dem Einreichen prüfen#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 Lösung
zugeordnet/originalpublic 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 Lösung
zugeordnet/originalvar 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 Lösung
zugeordnet/originaldef 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 Lösung
zugeordnet/originalpackage 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ов Arrayа.
Пройдите по Arrayу, вычисляя текущую сумму elementов слева и проверяя, равна ли она разности между общей суммой и текущей суммой справа.
Если текущий индекс удовлетворяет условию, return его; если нет, продолжайте проверку. Если такой индекс не найден, return -1.
😎
Stellen zu dieser Aufgabe
aktive Stellen with overlapping task tags are angezeigt.