L26. Sort a Linked List | Merge Sort and Brute Force

  Рет қаралды 103,113

take U forward

take U forward

Күн бұрын

Пікірлер: 103
@mohammadusman9701
@mohammadusman9701 3 ай бұрын
came here to learn on how to sort a linkedlist then went back to learn merge sort - hated striver then went back to learn how to merge two sorted linkedlist- hated striver then went back to learn the tortoise hare method(middle) - hated striver then came back and understood everything easily - loving striver
@avengergirl_0464
@avengergirl_0464 3 ай бұрын
😮😮😮
@ThePROestRedn99
@ThePROestRedn99 3 ай бұрын
If u will jump into middle of the course...This will obviously happen
@brokegod5871
@brokegod5871 3 ай бұрын
Why are you learning linked list when you don't even know a basic sorting algorithm?
@Ayush37262
@Ayush37262 2 ай бұрын
Aur phir yahi log khete hai ki bhaijaan kiya toh sab kuch, select phir bhi nahi hua...
@JyothiBomminayani
@JyothiBomminayani 2 ай бұрын
where is the video of merge two sorted linkedlist
@abbie1103
@abbie1103 4 ай бұрын
You use recursion very well in real life... In L26 - I have explained this in previous lecture(L24) go watch that; In L24 - I have explained this in previous lecture go watch that; and so on... till you reach the base video; No offense, just a catch. Your videos are really good, helped me alot. Thanks👍
@xrishabh
@xrishabh 4 ай бұрын
Recursive Nature
@rushidesai2836
@rushidesai2836 6 ай бұрын
One of the best questions on LinkedList for sure!
@HARSHBAID-m5f
@HARSHBAID-m5f 9 ай бұрын
Thanks for sharing brother , i am on recursion topic learning consistently , feel good that even today you upload videos consistently in this inspiring helping 1000's of people , Thanks for that and More Power to you..
@abudanish196
@abudanish196 9 ай бұрын
Understood! Man you are a Legend!!!
@IamNikhil2121
@IamNikhil2121 9 ай бұрын
Time stamps intro :- 0:00 brute force :- 0:45 Better (merge sort) :- 6:20 complexity analysis :- 19:25
@jatinpandey6453
@jatinpandey6453 9 ай бұрын
For the people who are finding to do this problem in O(1) space complexity (follow up from leetcode, coding ninja, etc): You shouldn't ! cos theres no one who does in O(1) sc either they use merge sort or create a new Linked List (with same length of input). Solution: Only way you you can do this in constant space is by using merge sort iteratively, which is again very complex solution and is of 100 lines of codes. And i dont think interviewer will give us this much time.
@jatinpandey6453
@jatinpandey6453 9 ай бұрын
the whole 100 lines of code is just passing on edge cases after edge cases i dont think you should do these but still posting the solution
@jatinpandey6453
@jatinpandey6453 9 ай бұрын
i dont know this man has achived this : public class Solution { private class MergeHelper { public ListNode newHead; public ListNode newTail; } public ListNode sortList(ListNode head) { if ( head == null || head.next == null) { return head; } ListNode dummyHeadOne = new ListNode(0); ListNode dummyHeadTwo = new ListNode(0); ListNode dummySortedHead = new ListNode(0); ListNode dummySortedLast = dummySortedHead; ListNode unvisitedNode = head; MergeHelper mergeRst = new MergeHelper(); int listLength = 0; int level = 0; while ( unvisitedNode != null && unvisitedNode.next != null ) { unvisitedNode = addNode ( dummyHeadOne, unvisitedNode, 1
@RAJADHANISH23BCE984
@RAJADHANISH23BCE984 Күн бұрын
can do insertion sort right?
@souvik33and37
@souvik33and37 3 ай бұрын
this person is a real legend
@jeet-smokey
@jeet-smokey 4 ай бұрын
Outstanding Explanation....!!!
@unknown76436
@unknown76436 8 ай бұрын
Brute force solutions ListNode* sortList(ListNode* head) { vector arr; ListNode* temp = head; // Extract values from the linked list and store them in the vector while(temp != nullptr){ arr.push_back(temp->val); temp = temp->next; } // Sort the vector sort(arr.begin(), arr.end()); // Update the linked list with sorted values temp = head; for(int i = 0; temp != nullptr; i++){ temp->val = arr[i]; temp = temp->next; } return head; }
@snehashisratna9074
@snehashisratna9074 9 ай бұрын
luv the way you teach ;
@vb6163
@vb6163 6 ай бұрын
ur vid are so good keep it up bro love u see ya bye
@MohdSaquibMansoori
@MohdSaquibMansoori 13 күн бұрын
If the algo is using recursion then it will take s.c to be O(log n). Then it will still no an optimized version.
@sumitkumartah2106
@sumitkumartah2106 7 ай бұрын
Hey striver, we can do it by using prority queue also.
@Satyam-je4tb
@Satyam-je4tb Ай бұрын
class Solution { public: ListNode* sortList(ListNode* head) { priority_queue pq; ListNode* temp = head; while(temp != NULL) { pq.push(temp->val); temp = temp->next; } temp = head; while(temp != NULL && !pq.empty()) { int top = pq.top(); pq.pop(); temp->val = top; temp = temp->next; } return head; } };
@chargeff06
@chargeff06 12 күн бұрын
but space complexity will be O(n), and in this video solution it is O(1)
@NazeerBashaShaik
@NazeerBashaShaik 5 ай бұрын
Understood, thank you.
@varunshridhar1310
@varunshridhar1310 7 ай бұрын
Do we need to consider recursion stack space?
@sadiqnaqvi991
@sadiqnaqvi991 7 ай бұрын
But sir, with merge sort, we are again using auxiliary space in the stack by using recursion. So by brute force or Merge sort, space is still exhausting, right?
@dakshsingh5891
@dakshsingh5891 5 ай бұрын
stack space doesn't count as auxiliary space.
@Ayush37262
@Ayush37262 2 ай бұрын
​@@dakshsingh5891 If you don't know something, at least don't give others false information. Recursion stack space is counted as auxiliary space.
@dakshsingh5891
@dakshsingh5891 2 ай бұрын
@@Ayush37262 okk bro i didn't know!!
@HR-pz7ts
@HR-pz7ts 23 күн бұрын
Jyada dimag lga rha h bkl
@xperthighlight
@xperthighlight Ай бұрын
bro after landing in this video by following your a2z sheet , I have been redirecting like a linked list to its previous again and again until I met a base case 🤣🤣🤣🤣
@montyk.151
@montyk.151 5 ай бұрын
The question given in the sheet asks to find it in O(1) space complexity
@RAJADHANISH23BCE984
@RAJADHANISH23BCE984 Күн бұрын
impossible bro
@siddiqabr7110
@siddiqabr7110 12 күн бұрын
21:37 we're creating a new node and copying all the elements isn't that O(n) space?
@Gg69696
@Gg69696 2 ай бұрын
thnx striver
@DeadPoolx1712
@DeadPoolx1712 Ай бұрын
UNDERSTOOD;
@aryasharma69
@aryasharma69 Ай бұрын
S.C. will be Log(n) for using extra recursive space
@abhinavabhi3568
@abhinavabhi3568 12 күн бұрын
Understood
@AshwinRB-yi3kf
@AshwinRB-yi3kf Ай бұрын
I'm curious, why do we stop at the first middle and not the second??
@AshwinRB-yi3kf
@AshwinRB-yi3kf Ай бұрын
Ok i figured it out, for those who didnt In the case your divided list is say 4 -> 2, the middle value according to the tortoise and hare algorithm will always be 2. This means if we divide the linked list into 2 halves left and right, left will always be equal to the original list, which results in stack overflow
@-FlyingZoro106
@-FlyingZoro106 7 ай бұрын
Thanks a lot
@_PRANAYMATE
@_PRANAYMATE 8 ай бұрын
Hey striver do we not need to count the stack space storing n function calls while calculating the space complexity
@Learnprogramming-q7f
@Learnprogramming-q7f 7 ай бұрын
Thank you Bhaiya
@pratyushtripathi1728
@pratyushtripathi1728 9 ай бұрын
Understood 😊
@prasanjit.bhanja
@prasanjit.bhanja 3 ай бұрын
Legend 😊
@ArpitaChoudhury_00
@ArpitaChoudhury_00 4 ай бұрын
Thank You🙏
@YourCodeVerse
@YourCodeVerse 8 ай бұрын
Understood✅🔥🔥
@adityasahni5262
@adityasahni5262 6 ай бұрын
Doesn't the optimal approach takes O(logn) space as it creates logn call stacks.
@ancitamendonca7329
@ancitamendonca7329 16 күн бұрын
how do the sorted lists get merged?
@arujain1690
@arujain1690 5 ай бұрын
How space complexity is constant O(1) ? We are creating a new LL (dummy node) and returning it so it should be o(N) right?
@adityabhanugarg3516
@adityabhanugarg3516 5 ай бұрын
we are just changing pointers of already given two linked lists
@vishalgupta7522
@vishalgupta7522 4 ай бұрын
just delete the dummy node then no extra space is required
@oyeesharme
@oyeesharme 3 ай бұрын
bhaiya has done some recursion here
@soumi6720
@soumi6720 4 ай бұрын
the legend
@subee128
@subee128 9 ай бұрын
Thanks
@knowthrvdo
@knowthrvdo 7 ай бұрын
NICE LECTURE AND PLZ UPLOAD REMAINING LECTURES OF A TO Z SDA SHEET PLZ THEY ARE VERY HELPFULL FOR US
@Oldmonk3321
@Oldmonk3321 5 ай бұрын
🔥
@abhishekprasad010
@abhishekprasad010 4 ай бұрын
understood
@mikeag1371
@mikeag1371 7 ай бұрын
merge sort also taking O(n) space i guess??
@rishabh7215
@rishabh7215 3 ай бұрын
can anyone explain why do we initialize Node* fast = head->next instead of just head in the tortoise-hare method?
@madhu_mohanreddy
@madhu_mohanreddy 3 ай бұрын
18:50
@avengergirl_0464
@avengergirl_0464 3 ай бұрын
Bcoz as we want 1st mid in this case....if we put fast on head->next ...it will end one step early and so slow will be on 1st mid instead of 2nd mid
@ninaad765
@ninaad765 2 ай бұрын
exactly, i was confused too @avengergirl_0464 why 1st, 2nd mid? that's only if there's even number of nodes...?
@avengergirl_0464
@avengergirl_0464 2 ай бұрын
@@ninaad765 dry run urself u will understand
@nayankhuman1043
@nayankhuman1043 Ай бұрын
understood :)
@anotherlostspirit
@anotherlostspirit Ай бұрын
hi, I on't understand the part where we must set fast = head.getNext() to place it 1 steps ahead the slow node, and why does slow need to stops at m1, am I missing something from the video?. I've watch the "how to find middle of Linked List" too and still doesnt know why we need that adjustment. Also I'm replying your comment cuz this is the latest comment, sorry if this borders you. Have a great day sir
@charanhr6433
@charanhr6433 3 ай бұрын
🎉🎉
@harigs72
@harigs72 29 күн бұрын
🎉❤
@AnshulSharma-gq2vn
@AnshulSharma-gq2vn 7 ай бұрын
❤❤
@YashGaneriwal-je6rh
@YashGaneriwal-je6rh 2 ай бұрын
done and dusted
@vinayaksai_akula
@vinayaksai_akula Күн бұрын
def sortLL(head): a=[] temp=head if head is None or head.next is None: return head while temp!=None: a.append(temp.data) temp=temp.next a.sort() temp=head for i in a: temp.data=i temp=temp.next return head
@prathamIsOp
@prathamIsOp 8 ай бұрын
C++ CODE | Leetcode Solution to Sort List: ⚡⚡ ListNode* findMiddleNode(ListNode* head) { if (head == NULL || head->next == NULL) { return head; } ListNode* slow = head; ListNode* fast = head->next; // head->next because we want slow to point to the first element/middle in the even length case while (fast != NULL && fast->next != NULL) { slow = slow->next; fast = fast->next->next; } return slow; } // merge linked list function ListNode* merge(ListNode* list1Head, ListNode* list2Head) { ListNode* dummyNode = new ListNode(-1); // can be any value ListNode* temp = dummyNode; while (list1Head != NULL && list2Head != NULL) { if (list1Head->val val) { temp->next = list1Head; temp = list1Head; list1Head = list1Head->next; } else { temp->next = list2Head; temp = list2Head; list2Head = list2Head->next; } } // if list1 still has elements left while (list1Head != NULL) { temp->next = list1Head; temp = list1Head; list1Head = list1Head->next; } // if list2 still has elements left while (list2Head != NULL) { temp->next = list2Head; temp = list2Head; list2Head = list2Head->next; } return dummyNode->next; } // MergeSort recursive ListNode* sortList(ListNode* head) { if (head == NULL || head->next == NULL) { return head; } ListNode* mid = findMiddleNode(head); ListNode* leftHead = head; ListNode* rightHead = mid->next; mid->next = NULL; // Disconnect the left and right halves leftHead = sortList(leftHead); rightHead = sortList(rightHead); return merge(leftHead, rightHead); }
@easylearn8924
@easylearn8924 8 ай бұрын
can anybody tell why we do fast=head->next?? if we dont do that it gives runtime error??
@chitranshsrivastava5880
@chitranshsrivastava5880 8 ай бұрын
Do a dry run you'll easily know why it is giving runtime error.
@shreyxnsh.14
@shreyxnsh.14 8 ай бұрын
you can also do this: ListNode* slow = head; ListNode* fast = head; while(fast->next!=NULL && fast->next->next!=NULL){ fast = fast->next->next; slow = slow->next; } return slow;
@ninaad765
@ninaad765 2 ай бұрын
@@shreyxnsh.14 does that work? instead of fast=head->next? (i was thinking it should be = head)
@nitpBlogs
@nitpBlogs 9 ай бұрын
Trees please 😉
@lifehustlers164
@lifehustlers164 9 ай бұрын
first comment
@rs-oz9jk
@rs-oz9jk 8 ай бұрын
where is the code man?
@NarutoUzumaki-zv4wm
@NarutoUzumaki-zv4wm 8 ай бұрын
Do it dude.
@mohitsingh7793
@mohitsingh7793 4 ай бұрын
class Solution { public: ListNode* findMiddle(ListNode *head) { ListNode *slow,*fast,*temp; temp=slow=fast=head; while(fast && fast->next) { temp=slow; slow=slow->next; fast=fast->next->next; } if(!fast) return temp; return slow; } ListNode *merge(ListNode *listA,ListNode *listB) { ListNode *head=new ListNode(); ListNode *root=head; while(listA && listB) { if(listA->valval) { head->next=listA; listA=listA->next; } else { head->next=listB; listB=listB->next; } head=head->next; } while(listA) { head->next=listA; listA=listA->next; head=head->next; } while(listB) { head->next=listB; listB=listB->next; head=head->next; } return root->next; } ListNode *mergeSort(ListNode * head) { if(!head || !head->next) return head; ListNode *middle=findMiddle(head); ListNode *leftHead=head; ListNode *rightHead=middle->next; middle->next=NULL; leftHead=mergeSort(leftHead); rightHead=mergeSort(rightHead); return merge(leftHead,rightHead); } ListNode* sortList(ListNode* head) { return mergeSort(head); } };
@IBMX65
@IBMX65 2 ай бұрын
7:00
@Anonymous____________A721
@Anonymous____________A721 3 ай бұрын
Its not short!!!!!!!
@VarunSharma-xd8xd
@VarunSharma-xd8xd 6 ай бұрын
public class Solution { public static Node sortList(Node head) { if(head==null || head.next==null){ return head; } Node ih=head; Node dh=head.next; Node ic=ih; Node dc=dh; while(dc!=null && dc.next!=null){ ic.next=dc.next; dc.next=dc.next.next; ic=ic.next; dc=dc.next; } // till now we have seperated both the lists dh=reverse(dh); // now need to merge these 2 return merge(ih,dh); } public static Node reverse(Node head){ Node curr=head; Node prev=null; while(curr!=null){ Node next=curr.next; curr.next=prev; prev=curr; curr=next; } return prev; } public static Node merge(Node left,Node right){ Node dummy=new Node(0); Node curr=dummy; while(left!=null && right!=null){ if(left.data
@cenacr007
@cenacr007 5 ай бұрын
us
@CompetitiveProgramming-b5r
@CompetitiveProgramming-b5r 9 ай бұрын
Hey Striver you look chuby♥
@sanjanaaa17
@sanjanaaa17 Ай бұрын
Personally didn't like this video. If i am spending 22 mins on your video you should explain everything and not redirect to xyz videos here and there. At least summarize the code even if it is already covered in some other video :/
@ShubhamSharma-oq4hr
@ShubhamSharma-oq4hr 7 ай бұрын
I really hate when you say go back and watch it, its very annoying
@gdppwow
@gdppwow 6 ай бұрын
Just watch it and comeback.
@Lalala_1701
@Lalala_1701 4 ай бұрын
Go back bro
@abhishekg2766
@abhishekg2766 3 ай бұрын
Bruhhhh getting this content is really hard and he is giving it for free so stop whining and go watch it 😮‍💨
@Adarshrai6339
@Adarshrai6339 2 ай бұрын
Bro you want him to explain same topic again and again🤡
@siddiqabr7110
@siddiqabr7110 Ай бұрын
0:45 I'm not bragging or anything but not in a million years i think of a brute force like these how can you come up with brute force methods 😅😅
@great.Indian.culture
@great.Indian.culture Ай бұрын
Bura mat manna i never understood not even a single question what u have taught so far in ur videos....
@arnabkundu1648
@arnabkundu1648 4 ай бұрын
Understood
@hardikpatel352
@hardikpatel352 5 ай бұрын
understood
@dewanandkumar8589
@dewanandkumar8589 5 ай бұрын
Understood
@abhinanda7049
@abhinanda7049 6 ай бұрын
understood
@ramakrishnakcr4417
@ramakrishnakcr4417 6 ай бұрын
understood
@SibiRanganathL
@SibiRanganathL 6 ай бұрын
Understood
Who’s the Real Dad Doll Squid? Can You Guess in 60 Seconds? | Roblox 3D
00:34
小丑家的感情危机!#小丑#天使#家庭
00:15
家庭搞笑日记
Рет қаралды 37 МЛН
Não sabe esconder Comida
00:20
DUDU e CAROL
Рет қаралды 49 МЛН
L23. Merge two sorted Linked Lists
18:55
take U forward
Рет қаралды 66 М.
Learn Merge Sort in 13 minutes 🔪
13:45
Bro Code
Рет қаралды 321 М.
XOR Linked List | GeeksForGeeks | Problem of the Day
9:21
Mathematics
Рет қаралды 249
L25. Merge K Sorted Lists | Multiple Approaches
30:02
take U forward
Рет қаралды 48 М.
Quick Sort For Beginners | Strivers A2Z DSA Course
35:17
take U forward
Рет қаралды 429 М.
Go Has Exceptions??
16:58
ThePrimeTime
Рет қаралды 68 М.
Sort List - Merge Sort - Leetcode 148
13:17
NeetCode
Рет қаралды 75 М.
Who’s the Real Dad Doll Squid? Can You Guess in 60 Seconds? | Roblox 3D
00:34