if you are watching this in lockdown believe me you are one of the rare species on the earth who is working hard to achieve something in life. Many students are wasting their time watching movies, playing pubg, watching netflix , etc, ALL THE BEST nitjstudenthere
While adding when you are creating new linked list, just add the new node in the begining not in the end, so in that case you dont need to reverse it again. btw this question was asked to me in amazon interview.
sir, we can do same without finding length and inserting zero ? As we are reversing already, we will just put check if(p->next!=NULL) //then do this. btw very smothly explained.
I thought so as I will add the sum in linked list. and then done its reversed trversal...Actually I was able to do that but some sort of overflow was there in my algo
Another approach: This will take a bit more space(2 extra strings) compared to what sir discussed but it will also save a lot of computations. But note that space complexity still remains O(N) in both approaches. So first create 2 empty strings - str1 & str2 Traverse the first linked list. At each node append it to our string. Convert this string to an integer - firstNum Similarly traverse second linked list and get - secondNum Add both of them: result = firstNum + secondNum Convert result to a string now For each character in result string: add it to a new node at insert at the end of our new Linked List. Return the new Linked List.
This is a technical detail but the remainder between 8 divided by 10 is actually 8, not 0. So in the cases where the carry is 0, it just means the addition variable and the remainder variable will be equal. e.g 8%10 yields 8 .
This is required to be done without reversing the lists. Otherwise the solution is trivial and is definitely not what the interviewer expects. Can you please explain how to do the same.
sir, if i want to multiply two numbers from diff linked lists and store the output no in a different. how can i do it?? can u just show it?? thank you .
I've a simple approach : Adding K lists in general. 1.Reverse list 1, list 2,....list k;//as many lists u want to add. 2. Initialize sum1=0,.... sumk=0; 3.initialize a = 1;//used in addition. 4. temp1 = head1; while (temp1) { sum1 += temp1.data *a; a=a*10; temp1 = temp1.next ; } 5.Reinitialize a = 1; Repeat process for other K-1 lists. 6.return sum1 + sum2+... sumk;
Can please anyone help me... I have one another method... Instead of naming a variable carry... We can increase the p->next data by 1... And for corner cases if p->next ==NULL then just add the last digits.. Can we do so na?
github.com/vivekanand44/codes-RUclips-videos/blob/master/add_two_numbers_linked_list.cpp sir in your above code on git hub,there is some change(second if condition n1-n2) i think so because it gives wrong output when size of second list is greater than first and according to your code there is no need of appending zero infront of list after reversing..concept was super thank you sir..i have been following your lectures and your are the best
don't make zero values as a node Node* addTwoLists(Node* first1, Node* second1) { Node* res = NULL; Node *temp, *prev = NULL; int carry = 0, sum; while (first1 != NULL || second1 != NULL) { sum = carry + (first1? first1->data: 0) + (second1? second1->data: 0); //if the data is null then make the value as zero bro!!!1 carry = (sum >= 10)? 1 : 0; sum = sum % 10; temp = newNode(sum); if(res == NULL) res = temp; else prev->next = temp; prev = temp; if (first1) first1 = first1->next; if (second1) second1 = second1->next; } if (carry > 0) temp->next = newNode(carry); return res; } i too solved today bro!
if you are watching this in lockdown believe me you are one of the rare species on the earth who is working hard to achieve something in life. Many students are wasting their time watching movies, playing pubg, watching netflix , etc, ALL THE BEST nitjstudenthere
which yr
@@pruthvirajk6019 1st yr
@@pruthvirajk6019 and u?
@@Official-tk3nc PUC 1
@@Official-tk3nc 1st yr me itna kyu padh rha bhai...relax ho jaa....
While adding when you are creating new linked list, just add the new node in the begining not in the end, so in that case you dont need to reverse it again. btw this question was asked to me in amazon interview.
Didn't ask
Yeah good optimization. Even i thought the same
nice bro
What a great explanation. Thanks for this one, I now have a glimpse on what I should do on this Machine Problem
optimizations could be done like no need to calculate length and difference to add zeroes we can reduce that step
khup chhan bhava.
Ekdam sopya bhashet ani chhan explain kelas.
my friend, very good examples. You are really helping me for my interview preparation that is coming up.
sir, we can do same without finding length and inserting zero ? As we are reversing already, we will just put check if(p->next!=NULL) //then do this. btw very smothly explained.
@Vivekanand Khyade your videos are very helpful for us. Thanks a lot !!
Good ! Great Way of explaination!
Great video, you explained it slowly and clearly.
You are probably the best teacher on planet earth! Thank you so much for this !!!!!!
Thank you so much sir : ) you are really helping us in a great way
sir plz also analyse time complexity of solution
that's makes ur lectures unbeatable
thanks sir for superb content
Can we modify one of original linked list to store the current both list nodes sum in one of existing linked list. It will reduce space complexity ??
I thought so as I will add the sum in linked list. and then done its reversed trversal...Actually I was able to do that but some sort of overflow was there in my algo
Can't thank you enough for the detailed explanations
Another approach:
This will take a bit more space(2 extra strings) compared to what sir discussed but it will also save a lot of computations. But note that space complexity still remains O(N) in both approaches.
So first create 2 empty strings - str1 & str2
Traverse the first linked list. At each node append it to our string. Convert this string to an integer - firstNum
Similarly traverse second linked list and get - secondNum
Add both of them: result = firstNum + secondNum
Convert result to a string now
For each character in result string:
add it to a new node at insert at the end of our new Linked List.
Return the new Linked List.
You just saved my life. Thanks. Excellent video!!!! #handsdown
Great explanation sir🙂😊😊
Super explanation
you are amazing sir nice video
This is a technical detail but the remainder between 8 divided by 10 is actually 8, not 0. So in the cases where the carry is 0, it just means the addition variable and the remainder variable will be equal.
e.g 8%10 yields 8 .
How to subtract two linked list Sir ?
If possible please give the git code.
also, this means that at the end..you are returning a linked list..correct?
What if you input two digit number. It is needed to separate it right? Example : 10 11 12 13
Sir beautifully done... Thank for the lecture
Nice sir You are doing well
This is required to be done without reversing the lists. Otherwise the solution is trivial and is definitely not what the interviewer expects. Can you please explain how to do the same.
sir, if i want to multiply two numbers from diff linked lists and store the output no in a different. how can i do it?? can u just show it?? thank you .
Remainder of 8/10 is not zero, but 8. 10 goes into 8 zero times, hence the remainder is 8.
I've a simple approach :
Adding K lists in general.
1.Reverse list 1, list 2,....list k;//as many lists u want to add.
2. Initialize sum1=0,.... sumk=0;
3.initialize a = 1;//used in addition.
4. temp1 = head1;
while (temp1) {
sum1 += temp1.data *a;
a=a*10;
temp1 = temp1.next ;
}
5.Reinitialize a = 1;
Repeat process for other K-1 lists.
6.return sum1 + sum2+... sumk;
Thanks Vivek for another awesome video!
Plz make video for *Large number Arithmetic* using DLL.
can't we do it without reversing???
Can please anyone help me...
I have one another method...
Instead of naming a variable carry... We can increase the p->next data by 1... And for corner cases if p->next ==NULL
then just add the last digits..
Can we do so na?
i think its more efficient by using double linked list. anyway good explanation tqu.
well explained
how to solve this question without reversing the linked list
sir, can you please make an explanatory video for polynomial addition using linked list?
Sir please show the full workinh of code also then it would be of much help.
great explanation sir. i want code please.
This problem has a recursive solution right?
Why Don't you provide the code link in the description..😐 please do it
nice sir...Come up with more problems like from codechef and hacker-rank .Thanks in advance:)
Your videos are awesome.
Can I get code in C++?
In either case reminder can go into new node. 5%10 = 5 not 0
Sir, your github link is not working.
Please help.
Thank you Sir:)
Whenever i hear .. Hello Frands, I complete it by.. "Chai pee lo".
Lol!
When i see Bakchod like you , I Complete it by .."Muh me Lelo....."
Sir I need infix and postfix program by using stack
Search it on "My code school data structure playlist" You'' find them.
github.com/vivekanand44/codes-RUclips-videos/blob/master/add_two_numbers_linked_list.cpp
sir in your above code on git hub,there is some change(second if condition n1-n2) i think so because it gives wrong output when size of second list is greater than first and according to your code there is no need of appending zero infront of list after reversing..concept was super thank you sir..i have been following your lectures and your are the best
if (n1 > n2)
{
diff = n2 - n1;
flag = 1;
}
He made a mistake here.
diff = n1-n2; is correct
Your program took more time than expected. This is coming in GFG please HELP
don't make zero values as a node
Node* addTwoLists(Node* first1, Node* second1) {
Node* res = NULL;
Node *temp, *prev = NULL;
int carry = 0, sum;
while (first1 != NULL || second1 != NULL)
{
sum = carry + (first1? first1->data: 0) +
(second1? second1->data: 0); //if the data is null then make the value as zero bro!!!1
carry = (sum >= 10)? 1 : 0;
sum = sum % 10;
temp = newNode(sum);
if(res == NULL)
res = temp;
else
prev->next = temp;
prev = temp;
if (first1) first1 = first1->next;
if (second1) second1 = second1->next;
}
if (carry > 0)
temp->next = newNode(carry);
return res;
}
i too solved today bro!
Pls provide the complete code
it is mod, not divide by 10.
how to solver this question whihout reversing?
use recursion ,it will be lil more complex
Code wode yahi dala karo yrr...Ab github par jaao ID banao ...dhundo kaha hai kaun saa hai ...
do it on the computer.........what is this
Too slow. Speak fast and make short videos.
you can increase the speed of the video to your convenience
Everyone is not fast like you so its good for them
yeah man!!! I've increased the speed to 1.5x...still the speed seems like normal