1228. Missing Number In Arithmetic Progression

LeetCode easy оригинал: C# #array #csharp #easy #leetcode

В массиве arr значения находились в арифметической прогрессии: значения arr[i + 1] - arr[i] равны для всех 0 <= i < arr.length - 1.

Из массива arr было удалено значение, которое не было первым или последним значением в массиве.

Дан массив arr, вернуть удаленное значение.

Пример:

Input: arr = [5,7,11,13]

Output: 9

Explanation: The previous array was [5,7,9,11,13].

C# решение

сопоставлено/оригинал
public class Solution {
    public int MissingNumber(int[] arr) {
        int n = arr.Length;
        int difference = (arr[n - 1] - arr[0]) / n;
        int expected = arr[0];
        foreach (int val in arr) {
            if (val != expected) {
                return expected;
            }
            expected += difference;
        }
        return expected;
    }
}

C++ решение

auto-draft, проверить перед отправкой
#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 MissingNumber(vector<int>& arr) {
        int n = arr.size();
        int difference = (arr[n - 1] - arr[0]) / n;
        int expected = arr[0];
        foreach (int val in arr) {
            if (val != expected) {
                return expected;
            }
            expected += difference;
        }
        return expected;
    }
}

Java решение

сопоставлено/оригинал
class Solution {
    public int missingNumber(int[] arr) {
        int n = arr.length;

        int difference = (arr[arr.length - 1] - arr[0]) / n;

        int expected = arr[0];

        for (int val : arr) {
            if (val != expected) return expected;

            expected += difference;
        }
        return expected;
    }
}

JavaScript решение

сопоставлено/оригинал
var missingNumber = function(arr) {
    let n = arr.length;
    let difference = (arr[n - 1] - arr[0]) / n;
    let expected = arr[0];

    for (let val of arr) {
        if (val !== expected) {
            return expected;
        }
        expected += difference;
    }
    return expected;
};

Go решение

сопоставлено/оригинал
func missingNumber(arr []int) int {
    n := len(arr)
    difference := (arr[n-1] - arr[0]) / n
    expected := arr[0]

    for _, val := range arr {
        if val != expected {
            return expected
        }
        expected += difference
    }
    return expected
}

Algorithm

Рассчитать разность difference между элементами арифметической прогрессии.

Начать с первого элемента массива и последовательно увеличивать ожидаемое значение на difference, проверяя каждый элемент массива.

Вернуть первое ожидаемое значение, которое не совпадает с текущим значением в массиве.

😎

Вакансии для этой задачи

Показаны активные вакансии с пересечением по тегам задачи.

Все вакансии
Активных вакансий пока нет.