09 Sept 2026Go / Python / TypeScriptEasy

Largest Number At Least Twice of Others

Return the index of the largest number when it is at least twice every other value.

Track the largest and second-largest values plus the largest value's index in a single pass, then compare the two maxima.

complexity

O(n) time and O(1) extra space.

solution files

  • Go largest-number-at-least-twice-of-others/solution.go
  • Python largest-number-at-least-twice-of-others/solution.py
  • TypeScript largest-number-at-least-twice-of-others/solution.ts

Solution files

Golargest-number-at-least-twice-of-others/solution.go
package main

func dominantIndex(nums []int) int {
	largest, second, largestIndex := -1, -1, -1
	for index, value := range nums {
		if value > largest {
			second, largest, largestIndex = largest, value, index
		} else if value > second {
			second = value
		}
	}
	if largest >= 2*second {
		return largestIndex
	}
	return -1
}
Pythonlargest-number-at-least-twice-of-others/solution.py
class Solution:
    def dominantIndex(self, nums: list[int]) -> int:
        largest = second = largest_index = -class="syntax-number">1
        for index, value in enumerate(nums):
            if value > largest: second, largest, largest_index = largest, value, index
            elif value > second: second = value
        return largest_index if largest >= class="syntax-number">2 * second else -class="syntax-number">1
TypeScriptlargest-number-at-least-twice-of-others/solution.ts
function dominantIndex(nums: number[]): number {
  let largest = -class="syntax-number">1;
  let second = -class="syntax-number">1;
  let largestIndex = -class="syntax-number">1;
  nums.forEach((value, index) => { if (value > largest) { second = largest; largest = value; largestIndex = index; } else if (value > second) second = value; });
  return largest >= class="syntax-number">2 * second ? largestIndex : -class="syntax-number">1;
}