No video

Longest Consecutive Sequence (LeetCode 128) | Full solution quick and easy explanation | Interviews

  Рет қаралды 17,331

Nikhil Lohia

Nikhil Lohia

Күн бұрын

Пікірлер: 73
@AadeshKulkarni
@AadeshKulkarni 6 ай бұрын
I would have given up on my DSA journey had you not started this channel, baba!
@sunshineandrainbow5453
@sunshineandrainbow5453 28 күн бұрын
Why didn't I find this channel early but I'm grateful I found it. Thank you so much, your channel is a real blessing ❤
@JustMeItsMMN
@JustMeItsMMN 4 ай бұрын
you can make it more efficient by adding: if (longestLength > nums.length / 2) { return longestLength; } to the end of every iteration, this will check if we have a longestLength that is bigger that 1/2 array
@stoiandelev12345678
@stoiandelev12345678 10 ай бұрын
Great explanation. A very impressive approach. Thank you very much.
@unknownman1
@unknownman1 9 ай бұрын
Easy solution, public int longestConsecutive(int[] nums) { HashSet myset = new HashSet(); int maxsize = 0; for(int num: nums){ myset.add(num); } for(int num: myset){ int current = num; int current_size = 1; if(!myset.contains(current-1)){ while(myset.contains(current+1)){ current = current + 1; current_size ++; } maxsize = Math.max(maxsize, current_size); } } return maxsize; }
@DeleMike7
@DeleMike7 2 ай бұрын
This is nice too! I love Java. numSet = set(nums) # remove repetition longest = 0 for n in nums: # check if n is the start of a sequence # that is, if left neighbour does not exist, then it is the start of a sequence if (n-1) not in numSet: # if it is, check for consecutive sequence length = 0 while (n + length) in numSet: # if right neighbour exist, keep increasing the length length += 1 longest = max(longest, length) return longest
@jaydoshi3623
@jaydoshi3623 3 ай бұрын
Hello Nikhil sir, I tried both the sorting approach and the HashMap approach on leetcode. Why does using the map take more time than the sorting approach, even though it is O(n) compared to O(NlogN)? Using sorting - 16ms Using hashmap - 47ms
@tejaltatiwar4682
@tejaltatiwar4682 Ай бұрын
how you chechked
@RamPageMMA
@RamPageMMA 7 күн бұрын
Where in the code are we setting the first number we are currently on from the array to true in the map?
@Jaydoshi77
@Jaydoshi77 Ай бұрын
gr8 explanation 👌👌
@techsavy5669
@techsavy5669 Жыл бұрын
Nice approach. Thank you.
@nikoo28
@nikoo28 Жыл бұрын
Glad it was helpful!
@kunalkheeva
@kunalkheeva Жыл бұрын
Best video so far, thank you.
@snehakandukuri429
@snehakandukuri429 4 ай бұрын
Getting the time Limit exceeded with the above solution.
@nikoo28
@nikoo28 4 ай бұрын
The solution passes well on LeetCode. Check the code in video description
@prasoonlall9432
@prasoonlall9432 Ай бұрын
One question Nikhil sir. Where have me marked the first visited elem as true as mentioned in the video at 14:48 ? Am I missing something or its a typo. Btw thanks a lot for this beautiful explanation.
@ravishankar7972
@ravishankar7972 25 күн бұрын
yes you are right.
@RamPageMMA
@RamPageMMA 7 күн бұрын
Exactly, that’s what I’m wondering too!!
@sreeharsharaveendra289
@sreeharsharaveendra289 8 ай бұрын
For the approach using optimization by sorting, one edge case to solve for would be repeated numbers. For example, take [1, 2, 0, 1] as input. After sorting it would be [0, 1, 1, 2]. So finding longest sequence, the right answer is [0, 1, 2], but your approach would take [0, 1] or [1, 2] as the final answer. Am curious to know how to handle this case with the sorting approach.
@nikoo28
@nikoo28 8 ай бұрын
for a test case : [1, 2, 0, 1] the right answer is: [0, 1] or [1, 2] 0, 1, 2 are not consecutive in your input test case.
@manishasharma-mh7fo
@manishasharma-mh7fo Жыл бұрын
thanku😇, was struggling a lot to understand this problem...finaallyyyy got the best
@vvssspraneeth1852
@vvssspraneeth1852 23 күн бұрын
excellent solution bro super methodology
@Usseeer_kaizen
@Usseeer_kaizen Ай бұрын
what would happen if we did't check whether it had been explored or not? just this part was a little bit confusing for me, but overall great explanation
@candichiu7850
@candichiu7850 Жыл бұрын
The best!!! Keep up the great work!!!😃
@myosith4795
@myosith4795 9 ай бұрын
Brilliant explanation I understand
@kevalgundigara
@kevalgundigara 6 ай бұрын
How is this O(n) with the nested while loop? Is it because this would technically be O(n * m) where n is the length of nums and m is the longest possible sequence, and m will always be less than or equal to n so it's negligible to O(n) ? Couldn't this be O(n^2) if all numbers in nums are sequential? Am I close or way off?
@nikoo28
@nikoo28 5 ай бұрын
even if it is a nested loop, we do not iterate on every element twice. We use the inner loop to move ahead.
@HeitorBernardino
@HeitorBernardino 7 ай бұрын
Thanks for de explanation, it was very clear and helpful. I have just one question... Why does the solution with map work without something like numberTravelledMap.put(num, Boolean.TRUE); at any moment?
@billyfigueroa1617
@billyfigueroa1617 6 ай бұрын
I have the same question. Feels like you can do it with out pre setting of the map to false
@tejaltatiwar4682
@tejaltatiwar4682 Ай бұрын
how bruteforce is taking n^3
@himanshujoshi1848
@himanshujoshi1848 7 ай бұрын
How is the the time-complexity of brute force is O(n^3)? Shouldn't it be O(n^6)? For example, if the array is [5, 1, 4, 3, 2, 6], then, if we start with 1, we need to traverse the array 5 times to get to the answer?
@mohitjain957
@mohitjain957 Жыл бұрын
I love your all video sir You are teaching like in best way ☺️
@nikoo28
@nikoo28 Жыл бұрын
Keep watching
@alexmercer416
@alexmercer416 6 ай бұрын
even after sorting, we need somthing like set, to avoid test cases like: [1,2,0,1]
@sachinsoma5757
@sachinsoma5757 11 ай бұрын
Thanks for the wonderful explaination
@nikoo28
@nikoo28 10 ай бұрын
Glad it was helpful!
@ramphapal6610
@ramphapal6610 2 ай бұрын
Nice explanation.. 🎉
@user-rh9rk9hx1t
@user-rh9rk9hx1t 5 ай бұрын
Does this work even for duplicate values in the array?
@mohamedhassan-ub4kj
@mohamedhassan-ub4kj Жыл бұрын
brute force is o(n^2) not n^3 as you have stated , thanks
@vinaykumarnandhikanti2822
@vinaykumarnandhikanti2822 11 ай бұрын
it is O(n^n) noob. If you have like all sequence [1,3,2,5,4,8,6,7,10,11,9]
@subee128
@subee128 8 ай бұрын
Thank you
@akshanshsharma8157
@akshanshsharma8157 5 ай бұрын
The brute force approach has time complexity n^2 but not n^3.
@vsaihruthikreddy7127
@vsaihruthikreddy7127 Ай бұрын
why not use a Set add all of the elements to that set, check if that element does not contain any left neighbor just loop through while loop to get the max length say S1 is the set and check S1.contains(num+len) initialize len to be 0. When it comes out of while loop take the longest one. I know the approach is the same with hashmap too but the code is lot less and we can check less conditions class Solution { public int longestConsecutive(int[] nums) { Set S1 = new HashSet(); int longest = 0, len = 0; for(int num:nums) S1.add(num); for(int num:nums){ if(!S1.contains(num-1)){ len = 0; while(S1.contains(num+len)){ len++; } longest = Math.max(len, longest); } } return longest; } }
@nikoo28
@nikoo28 Ай бұрын
this method works as well...great job!!
@pratyakshamaheshwari8269
@pratyakshamaheshwari8269 Жыл бұрын
Thank you!
@notmrabhi1
@notmrabhi1 Жыл бұрын
Thanks, bhaiya and yes bhaiya try to explain code in C++ also.
@nikoo28
@nikoo28 Жыл бұрын
it is really hard to explain code in several languages. Everyone has their own preference. But rest assured, if you are following the logic correctly...writing code shouldn't be a problem.
@notmrabhi1
@notmrabhi1 Жыл бұрын
@@nikoo28 u r right Bhaiya but just for feedback I said and max programmers prefer C++ as I know, otherwise your words are very clear and stable that anyone can understand.
@aayushpatel8584
@aayushpatel8584 Жыл бұрын
@@nikoo28 no sir please! your current language is prefect.
@rizwanalikhan9213
@rizwanalikhan9213 11 ай бұрын
sir java is perfect i like ur video@@nikoo28
@Amit00978
@Amit00978 Жыл бұрын
helpful video :)
@parthmodi2028
@parthmodi2028 8 ай бұрын
Really love ur videos.
@nikoo28
@nikoo28 7 ай бұрын
Thank you so much 😀
@continnum_radhe-radhe
@continnum_radhe-radhe Жыл бұрын
❤❤❤
@aswanthnarayanan
@aswanthnarayanan Жыл бұрын
Thanks
@adityajaiswal9069
@adityajaiswal9069 Жыл бұрын
can someone help me with the code for brute force. just for the better understanding of loops.
@nikoo28
@nikoo28 Жыл бұрын
to understand loops, this problem is not ideal. Nested loops are never easy to look at and understand.
@adityakumarsingh8406
@adityakumarsingh8406 5 ай бұрын
The question mentions that You must write an algorithm that runs in O(n) time but ig this approach takes 0(n^2) time.
@honey-xr5kp
@honey-xr5kp 5 ай бұрын
no, this approach is O(n) time. you only iterate through the array once. With the help of the hashmap, you can cut the time complexity down, at the cost of a little bit extra space.
@nikoo28
@nikoo28 5 ай бұрын
Absolutely correct
@atharv9924
@atharv9924 10 ай бұрын
Didn't you traversed through the input list twice?? Once to create hashmap and next while actually iterating over list.
@nikoo28
@nikoo28 9 ай бұрын
yes, so the complexity is O(2 * n) which is equivalent to O(n)
@abdullahalnahian1266
@abdullahalnahian1266 Жыл бұрын
Tnxs sir..... I am from bd🇧🇩......sir can you please make a video about Github....how can open...how can it work....how can we use properly it.....that typ video..... Tnxs once againAs sir❤️
@nikoo28
@nikoo28 Жыл бұрын
Ok I will try
@omkarkhandalkar8869
@omkarkhandalkar8869 Жыл бұрын
sir can you name that book for learning DsAlgo
@nikoo28
@nikoo28 Жыл бұрын
The book by Cormen is really exhaustive..covers everything you need to learn
@kag1984007
@kag1984007 7 ай бұрын
Here is my solution , I think its simpler , please let me know if any issues: public int longestConsecutive(int[] nums) { if(nums.length < 2){ return nums.length ; } Arrays.sort(nums); int lC = 1; int longestLc = 1; int lastNum = nums[0]; for(int i = 1 ; i < nums.length ; i++){ if( nums[i] == lastNum){ continue; }else if(nums[i] == lastNum+1){ lastNum = nums[i]; lC++; }else{ lastNum = nums[i]; if(longestLc < lC){ longestLc = lC; } lC = 1; } } if(longestLc < lC){ longestLc = lC; } return longestLc; }
@Digitalgalaxy11
@Digitalgalaxy11 11 ай бұрын
In which language u write this code sir
@nikoo28
@nikoo28 10 ай бұрын
that is JAVA usually
@fandusmercius723
@fandusmercius723 6 ай бұрын
you didnt even run your code
@nikoo28
@nikoo28 5 ай бұрын
check out my code on github...link available in description
@honey-xr5kp
@honey-xr5kp 5 ай бұрын
a question i have: the first while loop when you search for nextNum (&& exploreMap.get(nextNum) == false) and the second while loop when you search for prevNum (&& !exploreMap.get(prevNum). The first one you say if it equals false. The second one you just use an exclamation point. Is this doing the same thing, or is it different? If it is the same, why did you do it in 2 different ways? It just confuses me a little bit.
@nikoo28
@nikoo28 4 ай бұрын
You are checking in both directions
At the end of the video, deadpool did this #harleyquinn #deadpool3 #wolverin #shorts
00:15
Anastasyia Prichinina. Actress. Cosplayer.
Рет қаралды 15 МЛН
Matching Picture Challenge with Alfredo Larin's family! 👍
00:37
BigSchool
Рет қаралды 52 МЛН
Leetcode 128 - LONGEST CONSECUTIVE SEQUENCE
9:24
NeetCode
Рет қаралды 346 М.
Longest Consecutive Sequence | Leetcode(Hard) | GooGLe
13:47
take U forward
Рет қаралды 143 М.
At the end of the video, deadpool did this #harleyquinn #deadpool3 #wolverin #shorts
00:15
Anastasyia Prichinina. Actress. Cosplayer.
Рет қаралды 15 МЛН