724. Find Pivot Index

LeetCode easy original: C# #array #csharp #easy #leetcode #search #two-pointers
O texto da tarefa é traduzido do russo para o idioma selecionado. O código permanece sem alterações.

Если задан array целых чисел nums, вычислите поворотный индекс этого arrayа. Поворотный индекс - это индекс, при котором сумма всех чисел строго слева от индекса равна сумме всех чисел строго справа от индекса. Если индекс находится на левом краю arrayа, то сумма слева равна 0, так как слева нет elementов. Это относится и к правому краю arrayа. returnsся самый левый поворотный индекс. Если такого индекса не существует, returnsся -1.

Exemplo:

Input: nums = [1,7,3,6,5,6]

Output: 3

C# solução

correspondente/original
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++ solução

rascunho automático, revisar antes de enviar
#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 solução

correspondente/original
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 solução

correspondente/original
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 solução

correspondente/original
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 solução

correspondente/original
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ов arrayа.

Пройдите по arrayу, вычисляя текущую сумму elementов слева и проверяя, равна ли она разности между общей суммой и текущей суммой справа.

Если текущий индекс удовлетворяет условию, return его; если нет, продолжайте проверку. Если такой индекс не найден, return -1.

😎

Vacancies for this task

vagas ativas with overlapping task tags are mostradas.

Todas as vagas
Ainda não há vagas ativas.