LeetCode 67. Add Binary Solution Explained - Java

Ғылым және технология

The Best Place To Learn Anything Coding Related - bit.ly/3MFZLIZ
Join my free exclusive community built to empower programmers! - www.skool.com/software-develo...
Preparing For Your Coding Interviews? Use These Resources
--------------------
(My Course) Data Structures & Algorithms for Coding Interviews - thedailybyte.dev/courses/nick
AlgoCademy - algocademy.com/?referral=nick...
Daily Coding Interview Questions - bit.ly/3xw1Sqz
10% Off Of The Best Web Hosting! - hostinger.com/nickwhite
Follow My Twitter - / nicholaswwhite
Follow My Instagram - / nickwwhite
Other Social Media
----------------------------------------------
Discord - / discord
Twitch - / nickwhitettv
TikTok - / nickwhitetiktok
LinkedIn - / nicholas-w-white
Show Support
------------------------------------------------------------------------------
Patreon - / nick_white
PayPal - paypal.me/nickwwhite?locale.x...
Become A Member - / @nickwhite
#coding #programming #softwareengineering

Пікірлер: 45

  • @destodorova8202
    @destodorova82024 жыл бұрын

    Thank you for taking the time to explain binary with addition examples - very helpful!!

  • @iugaialeksei2108
    @iugaialeksei21089 ай бұрын

    You are awesome man, so simple and clear explanation for leetcode tasks I've ever seen on youtube. Also, your solutions are always simple and clean.

  • @ashisenchoudhury162
    @ashisenchoudhury1622 жыл бұрын

    You are awesome Nick...Thank you for explaining each and every problem....It is helping me a lot to improve my coding and thinking skills.....Thanks, Love from India!!!

  • @darod6098
    @darod60984 жыл бұрын

    Inserting at the end and then reversing is actually better than inserting at the beginning of the string builder with something like sb.insert(0, sum %2) ?

  • @leezhenjian7451
    @leezhenjian74516 ай бұрын

    Hi Nick, thanks for the clear explanation. I was having trouble figuring out how the carry and sum modulus works until i watched ur video.

  • @curiosity9861
    @curiosity98613 жыл бұрын

    Very helpful video, but if we dont use carry variable in this program instead after sb.append(sum%2) line we can use sum=sum/2; and after while loop check if sum!=0 if true append it and then returning it will result in 1ms of runtime which is faster than 100% of java code.

  • @nikhilpoonia8191
    @nikhilpoonia8191 Жыл бұрын

    thank you Nick.....explanation and looks both are on top level

  • @user-hy2cv7zz3d
    @user-hy2cv7zz3d4 ай бұрын

    Honestly the best explanation for this problem on the platform. Thank you :D

  • @satyamgupta6030
    @satyamgupta6030 Жыл бұрын

    what a nice solution and approach man thanks a ton nick brother. keep making such videos.

  • @mohankrishna4987
    @mohankrishna49874 жыл бұрын

    Very Nice Solution, Thanks a lot.

  • @varunrao2931
    @varunrao29314 жыл бұрын

    Can you do it without using the + operator (only using bit manipulation). FANG has been known to ask this

  • @akashpal7748
    @akashpal77482 жыл бұрын

    Best explanation 😊 Thank you

  • @mashrufehsan
    @mashrufehsan6 ай бұрын

    It was very helpful. Thank you.

  • @beibaryslearner
    @beibaryslearner7 ай бұрын

    very good explanation

  • @kabilanm9206
    @kabilanm92063 жыл бұрын

    carry ==1 also should be included in while loop condition!!

  • @tasneemayham974
    @tasneemayham974 Жыл бұрын

    One question: why use a StringBuilder instead of a normal string?

  • @nhilratha5368
    @nhilratha53682 жыл бұрын

    how about Subtraction ?

  • @dev-skills
    @dev-skills3 жыл бұрын

    Below is the solution using Bit Manipulation (same Time Complexity but more space efficient) class Solution { public String addBinary(String a, String b) { int i = a.length() - 1; int j = b.length() - 1; StringBuilder result = new StringBuilder(); boolean carry = false; while(i >= 0 || j >= 0) { boolean sumWithCarry = false; boolean aBit = (i >= 0) ? (a.charAt(i--) - '0' > 0) : false; boolean bBit = (j >= 0) ? (b.charAt(j--) - '0' > 0) : false; boolean sum = aBit ^ bBit; // a ^ b sumWithCarry = sum ^ carry; // a ^ b ^ c carry = (aBit & bBit) | (sum & carry); // a & b | sum & c if (sumWithCarry) result.insert(0, 1); else result.insert(0, 0); } if (carry) { result.insert(0, 1); } return result.toString(); } }

  • @akware977
    @akware977 Жыл бұрын

    simply awesome

  • @edgbaston149
    @edgbaston149 Жыл бұрын

    Thank you

  • @mohkh7610
    @mohkh761011 ай бұрын

    I am a bit confused, let's say the numbers are "11" & "11" Won't the sum add 1 from each first number of these numbers to become 2 then carry is divided by 2, and then sum = carry sum =1 then sum+=1 twice to become 3? I think I perceived something wrongly because I don't think the sum should be 3. or maybe it should be 3 but I don't know how

  • @rohitrohilla4927
    @rohitrohilla49272 жыл бұрын

    i wanna tell you i am a beginner and whenever I see your code then There is only a line in my mind 'What a crazy code is this' !...

  • @topsiterings
    @topsiterings4 жыл бұрын

    Nice!

  • @aryanjindal127
    @aryanjindal1272 жыл бұрын

    Why did you initialize the sum as carry??

  • @MrSaurus

    @MrSaurus

    Жыл бұрын

    If I am understanding properly, it is because each time an operation takes place, the carry needs to be sent to sum, for the next operation. So if 1+1 happens, carry would be assigned the value of 2/2, which is 1, and once it loops back, 1 is already assigned to sum because that 1 came from the carry

  • @feelthestrength9964
    @feelthestrength99642 жыл бұрын

    pls solve this write 1 to 5 in binary numbers pls solve it through java coding

  • @raihanoorfarid4973
    @raihanoorfarid4973 Жыл бұрын

    Tnx

  • @hande8384
    @hande83844 жыл бұрын

    in case of 11 +11 3 % 2 =0 which will append 0 but 3 in binary is 11 should append 1

  • @alokmehta4631

    @alokmehta4631

    4 жыл бұрын

    mod operator gives the remainder and when 3 is divided by 2 the remainder is 1 not 0

  • @SHSelect
    @SHSelect2 жыл бұрын

    question: why does '1' - '0' = 1 while '1' + '0' = 97?

  • @chemudupatikarthik8

    @chemudupatikarthik8

    4 ай бұрын

    The reason behind this lies in the way programming languages handle different types of data. When you use the '1' - '0' operation, many programming languages will implicitly convert the characters '1' and '0' into their corresponding ASCII (or Unicode) values before performing the subtraction. In ASCII, the character '1' has a decimal value of 49, and the character '0' has a decimal value of 48. So, '1' - '0' essentially becomes 49 - 48, resulting in 1. However, when you use the '1' + '0' operation, the programming language treats the '1' and '0' as characters to concatenate rather than numbers to add. In ASCII, '1' has a decimal value of 49, and '0' has a decimal value of 48. When you add these characters together, it concatenates them, resulting in the string '10', which in ASCII would represent the character with a decimal value of 97.

  • @shauryakapoor2122
    @shauryakapoor21223 жыл бұрын

    Can anyone explain why we do - '0' in line 11 and line 12? ( sum += a.charAt(i) - '0'); and at ( sum += b.charAt(i) - '0');

  • @sushmitagupta6101

    @sushmitagupta6101

    3 жыл бұрын

    to make it as integer, we do that

  • @franperez6454

    @franperez6454

    Жыл бұрын

    in case someone still wonders about this... When using characters in a int type variable (such as sum), they are returned with the ASCII value. a.charAt(1)=49 (ASCII value of 1). So if we want to get the int value of 1 we need to substract the ASCII value of 0 (48). (int) 1-0 = (ASCII) 49-48 = 1 (int) 2-0= (ASCII) 50-48=2 …

  • @shauryakapoor2122

    @shauryakapoor2122

    Жыл бұрын

    @@franperez6454 thank you

  • @bhushank1234
    @bhushank12344 жыл бұрын

    Thanks for the solution. You explained it nicely. What is the space and time complexity of this solution?

  • @weizhou4974

    @weizhou4974

    4 жыл бұрын

    The time complexity is o(n) and space complexity is o(1)

  • @stayblessed4real

    @stayblessed4real

    2 жыл бұрын

    @@weizhou4974 Can you please explain that why exactly he used string builder?

  • @MrSaurus

    @MrSaurus

    Жыл бұрын

    @@stayblessed4real I think it's because the method needs to be returned as a string

  • @unkown657

    @unkown657

    Жыл бұрын

    String builder was used for 2 reasons: 1. being able to modify the String, as usual String is immutable object, 2. which also goes back to reason number, which is the reverse function.

  • @shritishaw7510
    @shritishaw75102 жыл бұрын

    0:08 system failure

  • @cengprog9529
    @cengprog95296 ай бұрын

    For anyone experiencing an error, here's a better code class Solution { public String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int i = a.length() - 1; int j = b.length() - 1; int carry = 0; while (i >= 0 || j >= 0 || carry > 0) { int sum = carry; if (i >= 0) sum += a.charAt(i--) - '0'; if (j >= 0) sum += b.charAt(j--) - '0'; sb.append(sum % 2); carry = sum / 2; } return sb.reverse().toString(); } }

  • @ameyamahadevgonal8130
    @ameyamahadevgonal81303 жыл бұрын

    consider editing

  • @chishikiendeavourer8663
    @chishikiendeavourer86634 жыл бұрын

    public static String addBinary(String a, String b){ BigInteger firstNum = new BigInteger(a, 2); BigInteger secondNum = new BigInteger(b, 2); BigInteger sum = firstNum.add(secondNum); return sum.toString(2); }

Келесі