int longestConsecutive(vector<int>& nums) {
int best = 0;
for (int start : nums) {
int len = 1;
while (find(nums.begin(), nums.end(), (long long)start + len) != nums.end()) len++;
best = max(best, len);
}
return best;
}
public int longestConsecutive(int[] nums) {
int best = 0;
for (int start : nums) {
int len = 1;
while (has(nums, (long) start + len)) len++;
best = Math.max(best, len);
}
return best;
}
private boolean has(int[] nums, long v) {
for (int x : nums) if (x == v) return true;
return false;
}
def longest_consecutive(nums: list[int]) -> int:
best = 0
for start in nums:
length = 1
while start + length in nums: length += 1
best = max(best, length)
return best
function longestConsecutive(nums: number[]): number {
let best = 0;
for (const start of nums) {
let len = 1;
while (nums.includes(start + len)) len++;
best = Math.max(best, len);
}
return best;
}
int longestConsecutive(vector<int>& nums) {
if (nums.empty()) return 0;
vector<int> sorted(nums); sort(sorted.begin(), sorted.end());
sorted.erase(unique(sorted.begin(), sorted.end()), sorted.end());
int best = 1;
int run = 1;
for (size_t i = 1; i < sorted.size(); i++) {
if ((long long)sorted[i] == (long long)sorted[i - 1] + 1) run++;
else run = 1;
best = max(best, run);
}
return best;
}
public int longestConsecutive(int[] nums) {
if (nums.length == 0) return 0;
int[] sorted = Arrays.stream(nums).distinct().sorted().toArray();
int best = 1;
int run = 1;
for (int i = 1; i < sorted.length; i++) {
if ((long) sorted[i] == (long) sorted[i - 1] + 1) run++;
else run = 1;
best = Math.max(best, run);
}
return best;
}
def longest_consecutive(nums: list[int]) -> int:
if not nums: return 0
ordered = sorted(set(nums))
best = 1
run = 1
for i in range(1, len(ordered)):
if ordered[i] == ordered[i - 1] + 1: run += 1
else: run = 1
best = max(best, run)
return best
function longestConsecutive(nums: number[]): number {
if (nums.length === 0) return 0;
const sorted = [...new Set(nums)].sort((a, b) => a - b);
let best = 1;
let run = 1;
for (let i = 1; i < sorted.length; i++) {
if (sorted[i] === sorted[i - 1] + 1) run++;
else run = 1;
best = Math.max(best, run);
}
return best;
}
int longestConsecutive(vector<int>& nums) {
unordered_set<long long> set(nums.begin(), nums.end());
int best = 0;
for (long long x : set) {
if (set.count(x - 1)) continue;
long long end = x;
while (set.count(end + 1)) end++;
best = max(best, (int)(end - x + 1));
}
return best;
}
public int longestConsecutive(int[] nums) {
Set<Long> set = new HashSet<>();
for (int v : nums) set.add((long) v);
int best = 0;
for (long x : set) {
if (set.contains(x - 1)) continue;
long end = x;
while (set.contains(end + 1)) end++;
best = Math.max(best, (int) (end - x + 1));
}
return best;
}
def longest_consecutive(nums: list[int]) -> int:
values = set(nums)
best = 0
for x in values:
if x - 1 in values: continue
end = x
while end + 1 in values: end += 1
best = max(best, end - x + 1)
return best
function longestConsecutive(nums: number[]): number {
const set = new Set(nums);
let best = 0;
for (const x of set) {
if (set.has(x - 1)) continue;
let end = x;
while (set.has(end + 1)) end++;
best = Math.max(best, end - x + 1);
}
return best;
}
int longestConsecutive(const vector<int>& nums) {
int n = nums.size();
if (n < 2) return n;
unordered_map<long long, int> span;
span.reserve(2 * n);
int best = 1;
for (int i = 0; i < n; i++) {
long long x = nums[i];
if (span.count(x)) continue;
int left = span.count(x - 1) ? span[x - 1] : 0;
int right = span.count(x + 1) ? span[x + 1] : 0;
int len = left + right + 1;
span[x] = len;
span[x - left] = len;
span[x + right] = len;
if (len > best) best = len;
}
return best;
}
public int longestConsecutive(int[] nums) {
int n = nums.length;
if (n < 2) return n;
Map<Long, Integer> span = new HashMap<>(2 * n);
int best = 1;
for (int i = 0; i < n; i++) {
long x = nums[i];
if (span.containsKey(x)) continue;
int left = span.getOrDefault(x - 1, 0);
int right = span.getOrDefault(x + 1, 0);
int len = left + right + 1;
span.put(x, len);
span.put(x - left, len);
span.put(x + right, len);
if (len > best) best = len;
}
return best;
}
def longest_consecutive(nums: Sequence[int]) -> int:
n = len(nums)
if n < 2: return n
span: dict[int, int] = {}
best = 1
for i in range(n):
x = nums[i]
if x in span: continue
left = span.get(x - 1, 0)
right = span.get(x + 1, 0)
length = left + right + 1
span[x] = length
span[x - left] = length
span[x + right] = length
if length > best: best = length
return best
function longestConsecutive(nums: ArrayLike<number>): number {
const n = nums.length;
if (n < 2) return n;
const span = new Map<number, number>();
let best = 1;
for (let i = 0; i < n; i++) {
const x = nums[i];
if (span.has(x)) continue;
const left = span.get(x - 1) ?? 0;
const right = span.get(x + 1) ?? 0;
const len = left + right + 1;
span.set(x, len);
span.set(x - left, len);
span.set(x + right, len);
if (len > best) best = len;
}
return best;
}