Тёмный

Sum of Two Integers - Leetcode 371 - Java 

NeetCode
Подписаться 809 тыс.
Просмотров 117 тыс.
50% 1

Опубликовано:

 

9 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 179   
@NeetCode
@NeetCode 2 года назад
ok fine, I will compromise and start doing my videos in C 😉
@mama1990ish
@mama1990ish 2 года назад
No please use python going forward. I religiously follow all your videos :) both for the explanation and because I like coding in python.
@ShivamJha00
@ShivamJha00 2 года назад
Why would you torture yourself like that
@dataman4503
@dataman4503 2 года назад
may be just pseudo code. lol
@maxmarkensten8841
@maxmarkensten8841 2 года назад
I'd still watch :D
@johns3641
@johns3641 2 года назад
Love that you completed all the vids for blind 75, but only use python for your codes. I have plenty of other people I could go to for C, so don't do any other language. Python only - that's your niche and why most people are here.
@sysy2152
@sysy2152 2 года назад
If you want to do the same thing in Python, you can use this code (and I'll explain it!): class Solution: def getSum(self, a: int, b: int) -> int: mask = 0xffffffff while b != 0: tmp = (a & b) mask // 2: return ~(a ^ mask) else: return a To explain, the hexadecimal number 0xffffffff is the same as the binary number 0b1111111111111111111111111111111, containing 32 1's. (It's just easier to type lol.) In order to make the code work like Java, we want to treat our numbers like they only have 32 bits. ANDing a number with the mask 0xffffffff, or 32 1's, basically turns all of a number's bits into 0's except for the rightmost 32. As a result, the number can be represented as if it only has 32 bits. We do what Neetcode describes in his video, using XOR for the sum and AND for the carry. We AND with the mask each time we set a and b in order to keep our numbers within 32 bits. After we exit the while loop, we have our answer a. If a is positive, then we can return it directly. However, in Python, negative numbers are represented in binary as having an unlimited number of leading 1's. The current answer would only have values in the rightmost 32 bits. Therefore, if the answer is negative, we need to convert it into Python's representation of negative numbers. First, we need to check if the answer is negative. We cannot just check to see if the answer is less than zero because our representation of the answer is not the same as Python's (since Python's have unlimited leading 1's). We are still treating our answer as if it only fits into 32 bits. A 32-bit signed integer is positive if the 32nd bit is a 0 and is negative if the 32nd bit is a 1. If we divide our mask (0xffffffff) by 2, we will get the binary number 0b0111111111111111111111111111111, which has 31 1's. This number is the greatest value we can have before the 32nd bit becomes a 1. Therefore, if our answer a > mask // 2, it is negative. Otherwise, it is positive and we can just return a itself. If the number is negative, we then need to convert it into Python's representation of negative numbers. To do so, we can XOR with the mask of 32 1's in order to flip the rightmost 32 bits, since XORing a bit with 1 flips the bit. We can then NOT the number in order to turn all of the leading 0's into 1's. For example, say that the answer is -3, and (....0000000) or (....1111111) denote leading 0's or 1's until the 32nd bit: Our representation of -3 in 32 bits: (...0000000)11111111111111111111111111111101 XOR with mask, aka flip rightmost 32 bits: (...0000000)00000000000000000000000000000010 NOT, aka flipping all bits: (...1111111)1111111111111111111111111111101 The result is Python's representation of -3, including an unlimited number of leading 1's. Overall, the code uses the same process as Neetcode's Java code, but with masking to get numbers into 32 bits and some manipulation to get those 32-bit numbers back into Python's representation before returning.
@eeew2691
@eeew2691 2 года назад
Man how tf do u know all this stuff. My code was failing to add -8 and -12, and here I was thinking what to do with -ve integers T_T. Having a non IT background surely makes it difficult
@anonymoustv8604
@anonymoustv8604 2 года назад
@@eeew2691 nah, this is hard even for people with IT background :)
@nick_esqueda
@nick_esqueda 2 года назад
thank you man, i really appreciate the in depth explanation!!! this forced me to learn a little more about python today lol, i don't ever think about how integers are stored in languages and stuff so this was kind of cool to dive into.
@lingzi6599
@lingzi6599 2 года назад
Is there a simpler solution for Python? If not, does this mean that Python is not good for handling binary operation?
@sysy2152
@sysy2152 2 года назад
@@lingzi6599 Unfortunately, since Python stores its integers in a different way than Java, all of this solution's parts are necessary. Python is as capable as any other language for handling binary operations, but in interviews (and beyond) it can be important to remember that Python represents its integers as having more than 32 bits. In many problems, remembering the bitmask of 0xffffffff can save you if you choose to use Python!
@thesouthsidedev1812
@thesouthsidedev1812 2 года назад
Thanks man for this. Just finished watching all your videos on the blind 75 list, I've learnt a lot.
@sia1910
@sia1910 2 года назад
Please use python too in your future vids! There are many java based channels, but yours is the only good python channel that I could find
@gunahawk6893
@gunahawk6893 2 года назад
@@caaarbz so is python, with ml and ai python will become top 2 soon
@NK-fe3md
@NK-fe3md 2 года назад
@@gunahawk6893 What ?, its already the 2nd most popular only behind javascript
@gunahawk6893
@gunahawk6893 2 года назад
@@NK-fe3md thats cool tho
@tsunghan_yu
@tsunghan_yu 2 года назад
9:31 Thanks for mentioning this. So that's why my python solution doesn't handle negative numbers.
@siomarapantarotto
@siomarapantarotto 2 года назад
Thanks so much! You were the only one capable to clear in my mind these bitwise operations handled together. The use of the variable 'tmp', explaining its reason and its location on the code really clarified everything. Congrats for this awesome tutorial. God bless you. 🥰
@akhileshsonkar2061
@akhileshsonkar2061 2 года назад
Thanks for Explanation.....this code will work in Java but not worked same in C++ with negative number 🙃For C++ code-------- int getSum(int a, int b) { while(b!=0) { unsigned int temp=(a&b); a=a^b; b=(int)(temp
@jayeshbhanushali1745
@jayeshbhanushali1745 2 года назад
Thanks
@785_barneetpanda5
@785_barneetpanda5 2 года назад
why dosent it directly work in C++?
@GauravSingh-bf7wu
@GauravSingh-bf7wu 2 года назад
Thanks bro!!!
@msris108
@msris108 2 года назад
Hey man love your videos, your explanation is absolutely spot on: the default int val in python is too big. For people crying about python, mask to limit int size to 32bit (0xffffffff). Don't spread hate people :) cheers class Solution: def getSum(self, a: int, b: int) -> int: mask=0xffffffff while b & mask: a, b = (a ^ b), (a & b) 0 else a
@mirrorinfinite5392
@mirrorinfinite5392 2 года назад
hi! in what case will b be more than 0 for your return statement? dont really get the return statement and would appreciate if you could explain!
@freyappari
@freyappari 27 дней назад
real G ,thanks man
@srivathsansundar2061
@srivathsansundar2061 16 дней назад
Realy appreciate the explanation, and keep continuing the great work, thank you good sir!
@mrmcyx8283
@mrmcyx8283 2 года назад
This is fantastic. Now I can save the world without using any "+". ; )
@osasikemwenogieva6998
@osasikemwenogieva6998 2 года назад
return Integer.sum(a,b); also works in a pinch! Java
@hehhehdummy
@hehhehdummy Год назад
ha!
@kilyos9212
@kilyos9212 2 года назад
I prefer the Java because it’s more similar to other languages. Either way thanks for this great video
@karloninvestors4056
@karloninvestors4056 2 года назад
Please continue with python
@zg5828
@zg5828 2 года назад
Umm... I think I found out why Neet used Java. I converted it to Python but I got a time-limit exceed error. I guess Java automatically handles some of the edge cases (like when the input is a negative number ) :/ .
@ayeshaadhikari6123
@ayeshaadhikari6123 Год назад
Thank you so much for such a clear explanation! Very helpful!
@stith_pragya
@stith_pragya 7 месяцев назад
Thank You So Much for this wonderful video.........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@U2011-n7w
@U2011-n7w 2 месяца назад
best explanation
@jaslinkaur645
@jaslinkaur645 2 года назад
can you explain why Python is not ideal for solving this binary question? Loved your logical approach and explanation in this video
@eyyo3571
@eyyo3571 2 года назад
I tried implementing the same method in python. Doesnt work for -ve numbers. The guy explain it at 9:31
@prabinlamsal74
@prabinlamsal74 Год назад
Yeah, his logical approach rather than an emotional approach is quite good . lol.
@SatyaMantha
@SatyaMantha Год назад
I code in java. But I first come to Neetcode, listen to your explanation, go back and code in Java. My fav youtuber !
@dorondavid4698
@dorondavid4698 2 года назад
Lol I like seeing everyone complain about this being Java...People, I'm a C++/C# programmer and I watch his Python videos. It's not hard to convert one language to another...the point of these vids is to understand the algorithm and apply it!
@meowmaple
@meowmaple 2 года назад
Yup its not hard, but as he mentioned you can't implement the algorithm that he show in the video in python.
@studyaccount794
@studyaccount794 2 года назад
I also code in java but I can easily understand c++/c and not to mention I'm here so I probably understand python too. It's not that difficult after some time you just start understanding them for some unknown reason (a good unknown reason).
@rhl_
@rhl_ 2 года назад
Try implementing this code in c/c++ then come back . people are complaining because he chose the easy way out of this. and didn't wrote the code in c/c++.
@dorondavid4698
@dorondavid4698 2 года назад
@@rhl_ What lol C++ was MADE for bit-shifting Do you even know how C++ works?
@rhl_
@rhl_ 2 года назад
@@dorondavid4698 ayyo never said cpp wasn't made for bit masking. Handling -ve number during bit operation is difficult in CPP. If u r so confident in ur coding skills , convert the code to CPP and run it for -ve number 👀.
@johns3641
@johns3641 2 года назад
@NeetCode, can you please post the python solution? I tried converting your C solution to python but got a time limit exceeded error :(
@ssshukla26
@ssshukla26 2 года назад
There was a good reason to do this solution in java...
@katearcher8881
@katearcher8881 2 года назад
def getSum(self, a: int, b: int) -> int: mask = 0xFFFFFFFF while b != 0: tmp = (a & b)
@johns3641
@johns3641 2 года назад
@@katearcher8881 Thanks!!
@johns3641
@johns3641 2 года назад
@@katearcher8881 Thanks! Never would've guessed this. Wow.
@jackieli1724
@jackieli1724 11 месяцев назад
Thank you really! Your course is the best of all😃
@UECAshutoshKumar
@UECAshutoshKumar Год назад
Thank you
@serioussam2071
@serioussam2071 25 дней назад
Coming back to your roots that is Java😊
@narendrakumariitb
@narendrakumariitb 2 года назад
this is more than hard question and you have explained it in more than easy way . thanks
@akshaymonga
@akshaymonga 2 года назад
man, your explanations are the best out there in youtube.
@crazyboy-gw7rk
@crazyboy-gw7rk Год назад
your are one of best teacher out there
@GauravSingh-bf7wu
@GauravSingh-bf7wu 2 года назад
Great explaination, but it doesn't work in C++. need additional change. See below comment of Akhilesh Sonkar for the solution
@ilanaizelman3993
@ilanaizelman3993 2 года назад
Thanks a lot!
@anahitahassan9687
@anahitahassan9687 2 года назад
How come if I use this solution in Python I get a Time Limit Exceeded error but it runs just fine with Java?
@daekunhan
@daekunhan Год назад
The best explanation EVER!
@ayushsrivastava3243
@ayushsrivastava3243 2 года назад
Wow! such an awesome explanation
@koushikkuruva2897
@koushikkuruva2897 Год назад
excellent explaination
@biswaMastAadmi
@biswaMastAadmi 2 года назад
Beautiful explanation
@Isha_Sethi
@Isha_Sethi Год назад
Helpful, thank you!
@codelateral675
@codelateral675 Год назад
Use whatever language you want we will still be here. Actually, I am a Java programmer. I didn't even know p of python but Neetcode is the only channel I watch for coding concepts. Most people don't understand programming languages are not important the purpose here is to understand the concept behind the questions. If you understand the concept you should be good enough to code it yourself if not then you don't know that programming language well enough. OMG, I want to write 2 pages regarding this but I think wise people will understand this.
@satyamgupta6030
@satyamgupta6030 Год назад
thanks neetcode
@ahmetturancanpolat1743
@ahmetturancanpolat1743 2 года назад
Thank man I read your code easily, I dont have a problem with java, but do you have a solution in python for negative numbers?
@madhurjajoo9404
@madhurjajoo9404 2 года назад
You actually listened and coded in java🥺 Thanks man. Also I see so many requests to stick to python I hope you do what you feel right I am okay with any of the language because your explanation does the work for me💯
@zr60
@zr60 2 года назад
He used Java because it's difficult to solve in Python LOL
@UKMatt32
@UKMatt32 Год назад
Is it cheeky to just create list = [a, b] and then return sum(list)? (It worked as a solution)
@namoan1216
@namoan1216 2 года назад
why python give time limit exceeded?
@TheLustz
@TheLustz 2 года назад
whats funny is that before he made the temp variable, the code subtracts b from a like this: def getSum(a, b): while b != 0: a = a^b b = (a&b)
@bubbletea8793
@bubbletea8793 2 года назад
Thanks man pt. 1
@gigachad6844
@gigachad6844 2 года назад
Doesn't work for c and c++
@eyyo3571
@eyyo3571 2 года назад
Is the microsoft logo at the beginning just random? Or is this problem tagged for microsoft?
@ShivangiSingh-wc3gk
@ShivangiSingh-wc3gk 2 года назад
Nice, I was making the 1and 1 case too complicated
@ravinders9221
@ravinders9221 2 года назад
nice & Thank you!!
@cuteangel1726
@cuteangel1726 Год назад
Have you done division of two integers
@Eggleweb97
@Eggleweb97 2 года назад
class Solution: def getSum(self, a: int, b: int) -> int: return sum([a,b])
@No-yp1uv
@No-yp1uv 8 месяцев назад
why is the time complexity O(1)
@sharemarketsher6073
@sharemarketsher6073 2 года назад
Brother please just use python
@hamzamahmood8980
@hamzamahmood8980 2 года назад
my solution in python, use log instead of binary: def getSum(self, a: int, b: int) -> int: # check one is zero and other is positive if min(a,b) == 0: return max(a,b) # if one is zero and other is negative if max(a,b) == 0: return min(a,b) # use property of ln, ln e^x = x x = math.e**a y = math.e**b z = x*y return int(math.log(z))
@alonebeast5310
@alonebeast5310 2 года назад
thanks buddy
@sdaiwepm
@sdaiwepm Год назад
OR we could use logs: return int(log((e**a)*(e**b)))
@sauravchandra10
@sauravchandra10 Год назад
It does not work for -1 and 1
@akka9335
@akka9335 2 года назад
Coding in Java after coding in python for many days is too frustrating!!! So many semi-colon mistakes! Such a long method call for just print(debug purposes)..Kindly provide an alternative solution in Python too.
@kalashnikov203
@kalashnikov203 2 года назад
Doesn't work for negative integers, since left shift operator on negative integers is not standardized and would give different answers based on compiler.
@vaidyanathanpk9221
@vaidyanathanpk9221 Год назад
+1. It works for Java though.
@LamNguyen-nm1id
@LamNguyen-nm1id Год назад
for what it's worth, the problem itself should be hard, not because it's harder than the actual hard problem, but it's not medium either
@zr60
@zr60 2 года назад
doesn't work for all test cases on python
@namoan1216
@namoan1216 2 года назад
this problem is crazy
@firezdog
@firezdog 2 года назад
Why is this problem on Blind 75? How does knowing how to solve it help solve other questions?
@gunahawk6893
@gunahawk6893 2 года назад
If you need to work with bit or low level things this would be helpful
@nikhil_a01
@nikhil_a01 Год назад
LeetCode's official solution says that this is a popular question at Facebook and the creator of the Blind 75 list was a Facebook tech lead. That's probably one reason why it's on the list. It's also a tricky bit manipulation problem so it can help solidify your skills there. Since it's an annoying problem it's better to do it now than see it for the time in an interview.
@nehaa3778
@nehaa3778 2 года назад
Finally a Java vid from you. Thanks for the vid though the time complexity can't be just O(1) right?
@parthshukla6189
@parthshukla6189 2 года назад
Please use Python man 🥺 My career is literally dependent on your channel
@AnarchySane
@AnarchySane 2 года назад
Shiiiit)
@ShivamJha00
@ShivamJha00 2 года назад
Pretty bad career you got there if it's "dependent" on a rando youtube channel
@parthshukla6189
@parthshukla6189 2 года назад
I guess its a good thing to find a instructor from which you understand things the best amount
@shrimpo6416
@shrimpo6416 2 года назад
You are NOT alone! I am pretty dependent on his channel too!!! I am a college student majoring at Stat with ZERO cs background so his videos means everything to me. Plus, I code in python only.
@bhushanlaware
@bhushanlaware 2 года назад
This code is faster than sum operator. Then why not to just use this for sum instead?
@DzwiekiOtchlani
@DzwiekiOtchlani Год назад
How the hell this is marked as a medium? It’s easier than most of the “easy” ones that I’ve seen
@terrancewang7329
@terrancewang7329 2 года назад
Please please please stick with Python...Absolutely the most interview-friendly language!!!
@kobebyrant9483
@kobebyrant9483 Год назад
really nicely explained!
@pranavsharma7479
@pranavsharma7479 2 года назад
this is the problem which you need to learn
@AndresC96
@AndresC96 2 месяца назад
I love you
@MaxFung
@MaxFung 6 месяцев назад
screw this. I just used the += operator in Python and said if someone wants to ask me a bitwise question in an interview I might as well just give up
@easyvedicmaths886
@easyvedicmaths886 2 месяца назад
why u did b != 0, can we not do a != 0?
@jessica_1811
@jessica_1811 11 месяцев назад
I ignored the "dislike" when you said so. But when I actually started doing this question i really disliked it.
@Andrew-pj9kb
@Andrew-pj9kb Месяц назад
I am completely skipping all bit manipulation questions. If an interviewer expects me to know this, they can get bleeped.
@NK-fe3md
@NK-fe3md 2 года назад
Can someone please explain why I can't use sum to solve this? class Solution: def missingNumber(self, nums: List[int]) -> int: #is 0 missing ? zero_missing = 0 in nums if not zero_missing: return 0 tot_sum = 0 for i in range(len(nums) + 1): tot_sum += i arr_sum = sum(nums) return tot_sum - arr_sum
@HotDiceMiniatures
@HotDiceMiniatures 2 года назад
Use Java if you want to baby! From the perspective of a beginner, the fact that this is done without an if structure is mind blasting.
@NoName-ef2gv
@NoName-ef2gv 2 года назад
Lol you’ve thumbed down this question too and asked us to not pay attention to it
@MrTacoMan123
@MrTacoMan123 2 года назад
lol'd when I saw the dislike. I also did the same for that question
@harshvardhanranvirsingh9473
@harshvardhanranvirsingh9473 2 года назад
Please! I'm solely here for a python
@KeshavKumar69420
@KeshavKumar69420 2 года назад
Please remain in Python !!!!!🙏
@allandogreat
@allandogreat 2 года назад
You used to use Python
@cmdv42
@cmdv42 2 года назад
💯
@programming1734
@programming1734 2 года назад
Bro no. Don't give up on us so soon :(
@AnnieBox
@AnnieBox 2 года назад
congrats on the complete 75 list!!! But as a python die-heart fan~~ you bend your knees on this one? No~~ I can't accept this!!! [○・`Д´・ ○]
@gunahawk6893
@gunahawk6893 2 года назад
😂 true , he hates java tho
@chanman1568
@chanman1568 2 года назад
return a+b
@jbn999
@jbn999 2 года назад
If there are only two elements... append them into a list and do a sum on that list - Python Solution.
@erikm9768
@erikm9768 2 года назад
why java :[
@nawendusingh2858
@nawendusingh2858 Год назад
did yo u just use java coz you don't want to explain mask?
@narendrakumariitb
@narendrakumariitb 2 года назад
few extra likes for coding in my goto language 😅
@qwertythefish6442
@qwertythefish6442 10 месяцев назад
Love your dislike to the question
@user-cu4pi6ir9q
@user-cu4pi6ir9q 7 месяцев назад
+=
@benalfred42
@benalfred42 2 года назад
Keep mixing it with Java!
@user-fd4dr8zu5q
@user-fd4dr8zu5q 2 года назад
lol neatcode disliked this questino
@kipa_chu
@kipa_chu 2 года назад
People crying for python are going to be bad developers. It should be easy as f to port the solution in any language of your choice. I don't even understand python and I've been porting all solutions to C++ from this channel.
@gunahawk6893
@gunahawk6893 2 года назад
People complain because they can't move to another language just for one problem
@gunahawk6893
@gunahawk6893 2 года назад
Also if u convert this solution to python it would give tle
@nikhil_a01
@nikhil_a01 Год назад
Normally I might agree with you but believe it or not sometimes the language does make a difference. This problem is quite a bit trickier in Python because integers have unlimited bit precision. It's not a simple port. To get the two's complement representation of a negative number you normally want to know how many bits your integer is.
@claim2game606
@claim2game606 3 месяца назад
just look at this overly complicated code in c++ by me.... just rubbish but it works perfectly fine in the constraints defined for a and b ...............................next line int getSum(int a, int b) { int ans = 0; int value = 1; if(a < 0 && b < 0) { a = abs(a); b = abs(b); value = -1; } if(a < 0 || b < 0) { if(a < 0) { if(abs(a) > b) { value = -1; } else { int t = b; b = a; a = t; } } else { if(abs(b) > a) { value = -1; int t = b; b = a; a = t; } } a = abs(a); b = abs(b); int c; int d; int i = 0; int e = 0; while(a != 0 || b != 0) { c = a&1; a >>= 1; d = b&1; b >>= 1; if(c + e - d == 0) { ans += 0; e = 0; } else if(c + e - d == 1) { ans += pow(2, i); } else if(c + e - d == -1) { ans += pow(2, i); e = -1; } i++; } } else { int c; int d; int e = 0; int i = 0; while(a != 0 || b != 0) { c = a&1; a >>= 1; d = b&1; b >>= 1; if(c + d + e == 1) { ans += pow(2, i); e = 0; } else if(c + d + e == 2) { if(a == 0 && b == 0) { ans += pow(2, i+1); } e = 1; } else if(c + d + e == 3) { if(a == 0 && b == 0) { ans += pow(2, i); ans += pow(2, i+1); } else { e = 1; ans += pow(2, i); } } i++; } } return ans*value; }
@humanity7880
@humanity7880 15 дней назад
woah
@symbol767
@symbol767 2 года назад
This problem is stupid af
@linshengred
@linshengred 7 месяцев назад
lol, dislike +1
@owenwu7995
@owenwu7995 Год назад
python solution: return(add(a, b)) I feel like this is too easy though even though this was accepted
Далее
Sum of Two Integers - LeetCode  371 - Python
15:53
Просмотров 5 тыс.
Rotate Image - Matrix - Leetcode 48
15:46
Просмотров 229 тыс.
лучшая покупка в моей жизни
00:41
Google Coding Interview With A High School Student
57:24
Missing Number - Blind 75 - Leetcode 268 - Python
12:11
The Problem with Time & Timezones - Computerphile
10:13
Intro to Competitive Programming
11:41
Просмотров 774 тыс.
Google Coding Interview With A Competitive Programmer
54:17
Premature Optimization
12:39
Просмотров 803 тыс.