@@orlanduca2567 skipping over duplicates. If not: if the start of a seq is a duplicated that exist k times you would check the seq k times which would bring you time up drasticlly
@@orlanduca2567I tested the same code looping through the list and it took 434ms but looping through the set, which doesn’t have repeated numbers, took only 17ms.
This is O(n^2) because for each value in the set, you are finding the longest sequence that starts with that value. For example [1, 2, 3, 4, 5], it will find count 5, then 4, ..., to 1. Before you start the inside while loop you must check that it is the start of the sequence by making sure that the num - 1 isn't in the set. If its not in the set then start checking num + 1
Interesting, my thought would be to remove elements from the set each time it was part of a sequence. Yours is likely more elegant since it doesn't mutate the set.
Does the set creation itself not count as an O(n) operation? You would need to iterate through all elements of the list to construct it. Then, you would be iterating over the elements twice, being O(n**2). Edit: Sorry, it would be O(2n), right? And the notation simplifies to O(n).
Thank you for the explanation. I'm not sure if I understand it correctly, but I think the time complexity is not O(n) but O(n^2), since we have 2 loops. The while loop makes the solution O(nk), where k is the average consecutive sequence's length. In the worst case, it's O(n^2), when all n elements construct an n-length consecutive sequence. How do you think?
That's wrong , it is O(n) because you are iterating over each element exactly once . The worst case you are talking about is not O( n^2) it is O(n + n ) since you will run over all the elements once you reach the min of the sequence , but after that , every other element will have the element before already in the set , thus won't enter the 2nd loop. Hope this explains it.
Holy cow! Aren't there Sr SE who'd architect the software? Why make us do things like this. I know people who never majored in CS and are Software Engineers. Unbelievable
Prof Singh Gupta. First day of class. Hi students! Are you smarter than me? If not you'll be in hell in my class. If you are you can be my student. What the f!
IMPORTANT FIX - WE SHOULD LOOP THROUGH THE SET S AND NOT NUMS ON LINE 5!!!
why is it relevant?
@@orlanduca2567I think it’s because looping through the set allows for skipping any duplicates in nums, which would improve the performance.
@@orlanduca2567 skipping over duplicates. If not: if the start of a seq is a duplicated that exist k times you would check the seq k times which would bring you time up drasticlly
@@orlanduca2567I tested the same code looping through the list and it took 434ms but looping through the set, which doesn’t have repeated numbers, took only 17ms.
This is O(n^2) because for each value in the set, you are finding the longest sequence that starts with that value. For example [1, 2, 3, 4, 5], it will find count 5, then 4, ..., to 1. Before you start the inside while loop you must check that it is the start of the sequence by making sure that the num - 1 isn't in the set. If its not in the set then start checking num + 1
checking for the existence of a value in a set takes O(1) time. That's why we are using the set.
Interesting, my thought would be to remove elements from the set each time it was part of a sequence. Yours is likely more elegant since it doesn't mutate the set.
Awesome solution
Very clean ❤❤
Does the set creation itself not count as an O(n) operation? You would need to iterate through all elements of the list to construct it. Then, you would be iterating over the elements twice, being O(n**2).
Edit: Sorry, it would be O(2n), right? And the notation simplifies to O(n).
Master Data Structures & Algorithms For FREE at AlgoMap.io!
W Fellow right here
Hurray
😂
thats smart
Thank you for the explanation.
I'm not sure if I understand it correctly, but I think the time complexity is not O(n) but O(n^2), since we have 2 loops.
The while loop makes the solution O(nk), where k is the average consecutive sequence's length. In the worst case, it's O(n^2), when all n elements construct an n-length consecutive sequence.
How do you think?
My Thoughts exactly,
I mean there are two loops in there
That's wrong , it is O(n) because you are iterating over each element exactly once . The worst case you are talking about is not O( n^2) it is O(n + n ) since you will run over all the elements once you reach the min of the sequence , but after that , every other element will have the element before already in the set , thus won't enter the 2nd loop.
Hope this explains it.
@@mohammadhammoud6531 it is O(n), not O(n^2)
@@mohammadhammoud6531 I think I got it finally. Thank you!
@@chungt6545 ur welcome 🙏🏻
What is the use of longest =0 variable
Very nicely done. You should be a college professor but most of them are cocky bastards anyway.
Holy cow! Aren't there Sr SE who'd architect the software? Why make us do things like this. I know people who never majored in CS and are Software Engineers. Unbelievable
Prof Singh Gupta. First day of class. Hi students! Are you smarter than me? If not you'll be in hell in my class. If you are you can be my student. What the f!
wild 💀