Это заявление о проблеме является частью карт и струн для карт IETCODE в рамках введения под заголовком к массивам.
Постановка задачи
В заданном целочисленном массиве Nums всегда есть ровно один самый большой элемент.
Найдите, является ли самый большой элемент в массиве, по крайней мере, вдвое больше, чем каждый другой номер в массиве.
Если это, верните указатель самого большого элемента, в противном случае return -1.
Пример 1.
Input: nums = [3, 6, 1, 0] Output: 1 Explanation: 6 is the largest integer and for every other number in the array x, 6 is more than twice as big as x. The index of value 6 is 1, so we return 1.
Пример 2.
Input: nums = [1, 2, 3, 4] Output: -1 Explanation: 4 isn't at least as big as twice the value of 3, so we return -1.
Примечание:
- Nums будет иметь длину в диапазоне [1, 50].
- Каждый номер [I] будет целым числом в диапазоне [0, 99].
Подход решения
- Найдите самый большой элемент и индекс крупнейшего элемента из массива.
- Итайте на массиве и проверьте, если в два раза больше всех других элементов меньше, чем наибольшее значение. Если это условие является ложным возвратом -1, остальное возвращает индекс самого большого элемента.
class Solution: def dominantIndex(self, nums: List[int]) -> int: largest_element = max(nums) result = nums.index(largest_element) for index, value in enumerate(nums): if (value != largest_element) and (largest_element < 2*value): result = -1 return result
Учащиеся
- Сложность времени решения равно 0 (n)
- Космическая сложность 0 (1)
Оригинал: “https://dev.to/mridubhatnagar/day-12-largest-number-at-least-twice-of-others-3fj7”