724. Find Pivot Index

LeetCode easy original: C# #array #csharp #easy #leetcode #search #two-pointers
题目文本会按所选界面语言从俄语翻译;代码保持不变。

Если задан 数组 целых чисел 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 已显示.

所有职位
目前还没有活跃职位。