ভিডিওতে দেখো — YouTube @algonur_com
কোড
Python
def longestConsecutive(nums: list[int]) -> int:
num_set = set(nums)
best = 0
for n in num_set:
if n - 1 not in num_set: # start of a sequence
cur = n
while cur in num_set:
cur += 1
best = max(best, cur - n)
return bestJava
public int longestConsecutive(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int n : nums) set.add(n);
int best = 0;
for (int n : set) {
if (!set.contains(n - 1)) {
int cur = n;
while (set.contains(cur)) cur++;
best = Math.max(best, cur - n);
}
}
return best;
}Kotlin
fun longestConsecutive(nums: IntArray): Int {
val set = nums.toHashSet()
var best = 0
for (n in set) {
if (n - 1 !in set) {
var cur = n
while (cur in set) cur++
best = maxOf(best, cur - n)
}
}
return best
}C++
int longestConsecutive(vector<int>& nums) {
unordered_set<int> s(nums.begin(), nums.end());
int best = 0;
for (int n : s) {
if (!s.count(n-1)) {
int cur = n;
while (s.count(cur)) cur++;
best = max(best, cur - n);
}
}
return best;
}C
int cmpInt(const void* a, const void* b) { return *(int*)a - *(int*)b; }
int longestConsecutive(int* nums, int n) {
if (!n) return 0;
qsort(nums, n, sizeof(int), cmpInt);
int best=1, cur=1;
for (int i=1;i<n;i++) {
if (nums[i]==nums[i-1]) continue;
cur = (nums[i]==nums[i-1]+1) ? cur+1 : 1;
if (cur>best) best=cur;
}
return best;
}জটিলতা
O(n)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(n)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← Valid Sudokuপরের সমস্যাValid Palindrome →