540. Single Element in a Sorted Array

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

Дан отсортированный массив, состоящий только из целых чисел, где каждый элемент встречается ровно дважды, кроме одного элемента, который встречается ровно один раз.

Верните единственный элемент, который встречается только один раз.

C# решение

сопоставлено/оригинал
class Solution {
    public int SingleNonDuplicate(int[] nums) {
        for (int i = 0; i < nums.Length - 1; i += 2) {
            if (nums[i] != nums[i + 1]) {
                return nums[i];
            }
        }
        return nums[^1];
    }
}

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 int SingleNonDuplicate(vector<int>& nums) {
        for (int i = 0; i < nums.size() - 1; i += 2) {
            if (nums[i] != nums[i + 1]) {
                return nums[i];
            }
        }
        return nums[^1];
    }
}

Java решение

сопоставлено/оригинал
class Solution {
    public int singleNonDuplicate(int[] nums) {
        for (int i = 0; i < nums.length - 1; i += 2) {
            if (nums[i] != nums[i + 1]) {
                return nums[i];
            }
        }
        return nums[nums.length - 1];
    }
}

JavaScript решение

сопоставлено/оригинал
class Solution {
    singleNonDuplicate(nums) {
        for (let i = 0; i < nums.length - 1; i += 2) {
            if (nums[i] !== nums[i + 1]) {
                return nums[i];
            }
        }
        return nums[nums.length - 1];
    }
}

Python решение

сопоставлено/оригинал
class Solution:
    def singleNonDuplicate(self, nums: List[int]) -> int:
        for i in range(0, len(nums) - 1, 2):
            if nums[i] != nums[i + 1]:
                return nums[i]
        return nums[-1]

Go решение

сопоставлено/оригинал
func singleNonDuplicate(nums []int) int {
    low, high := 0, len(nums)-1

    for low < high {
        mid := low + (high-low)/2
        if mid%2 == 1 {
            mid-- // всегда проверяем пары с чётного индекса
        }
        if nums[mid] == nums[mid+1] {
            low = mid + 2
        } else {
            high = mid
        }
    }

    return nums[low]
}

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

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

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