def nearestGreater(a): b = [-1] * len(a) for i, no in enumerate(a): neigh = None for offset in range(max([i, len(a) - i])): if i - offset >= 0 and a[i - offset] > a[i]: neigh = i - offset break elif i + offset < len(a) and a[i + offset] > a[i]: neigh = i + offset break if neigh: b[i] = neigh return b assert nearestGreater([7, 7, 7]) == [-1, -1, -1] assert nearestGreater([1, 4, 2, 1, 7, 6]) == [1, 4, 1, 2, -1, 4]