#include <stdlib.h>
static int cmp(const void *a, const void *b) {
return *(const int *)a - *(const int *)b;
}
int longestConsecutive(int *nums, int numsSize) {
if (numsSize == 0) {
return 0;
}
qsort(nums, numsSize, sizeof(int), cmp);
int longest = 1;
int count = 1;
for (int i = 1; i < numsSize; i++) {
if (nums[i] == nums[i - 1]) {
continue;
}
if (nums[i] == nums[i - 1] + 1) {
count++;
} else {
count = 1;
}
if (count > longest) {
longest = count;
}
}
return longest;
}
#include <unordered_set>
#include <vector>
using namespace std;
class Solution {
public:
int longestConsecutive(vector<int> &nums) {
int count = 0;
int max = 0;
unordered_set<int> set(nums.begin(), nums.end());
for (int n : set) {
if (!set.contains(n - 1)) {
count = 1;
while (set.contains(n + count))
count++;
if (count > max)
max = count;
}
}
return max;
}
};
package main
func longestConsecutive(nums []int) int {
set := make(map[int]bool, len(nums))
for _, n := range nums {
set[n] = true
}
longest := 0
for n := range set {
if !set[n-1] {
count := 1
for set[n+count] {
count++
}
if count > longest {
longest = count
}
}
}
return longest
}
import java.util.HashSet;
import java.util.Set;
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int n : nums) {
set.add(n);
}
int longest = 0;
for (int n : set) {
if (!set.contains(n - 1)) {
int count = 1;
while (set.contains(n + count)) {
count++;
}
longest = Math.max(longest, count);
}
}
return longest;
}
}
class Solution {
longestConsecutive(nums) {
const set = new Set(nums);
let longest = 0;
for (const n of set) {
if (!set.has(n - 1)) {
let count = 1;
while (set.has(n + count)) {
count++;
}
longest = Math.max(longest, count);
}
}
return longest;
}
}
class Solution:
def longestConsecutive(self, nums: list[int]) -> int:
num_set = set(nums)
longest = 0
for n in num_set:
if n - 1 not in num_set:
count = 1
while n + count in num_set:
count += 1
longest = max(longest, count)
return longest
use std::collections::HashSet;
struct Solution;
impl Solution {
fn longest_consecutive(nums: Vec<i32>) -> i32 {
let set: HashSet<i32> = nums.into_iter().collect();
let mut longest = 0;
for &n in &set {
if !set.contains(&(n - 1)) {
let mut count = 1;
while set.contains(&(n + count)) {
count += 1;
}
longest = longest.max(count);
}
}
longest
}
}