L7. Single Number III | Bit Manipulation

Поделиться
HTML-код
  • Опубликовано: 22 авг 2024

Комментарии • 58

  • @Lucifer-spam
    @Lucifer-spam 5 месяцев назад +92

    There is a small mistake @19:04
    rightmost = (xor & (xor - 1)) ^ xor is the correct formula.
    Very great explanation! 🔥🙌

    • @shubhrajit2117
      @shubhrajit2117 3 месяца назад +1

      Alternatively u can use xor & -xor

    • @AkOp-bf9vm
      @AkOp-bf9vm 2 месяца назад

      @@shubhrajit2117 after using this formula did we still need to take XOR as long datatype?? or it will work in int

    • @siddheshpandey7905
      @siddheshpandey7905 2 месяца назад +1

      @@AkOp-bf9vm Yes, you need to use long because when xor is -2^31 then -xor=2^31 which is more than INT_MAX

  • @amanverma5912
    @amanverma5912 5 месяцев назад +31

    The previous way when you code at the end of the video was great. Please continue like that .

    • @movieskingdom1748
      @movieskingdom1748 2 месяца назад +2

      It's ok. He wants to make it language independent ig.

    • @cosmicthor7330
      @cosmicthor7330 Месяц назад

      @@movieskingdom1748 and he might not get c++ viewers also ,bcz most of the time people figure out approach but might face difficulty in coding

  • @shubhrajit2117
    @shubhrajit2117 3 месяца назад +6

    1:20: using hash map (brute force)
    6:05: bitwise approach (optimised)
    18:05: code for optimised approach

  • @conor8687
    @conor8687 2 месяца назад +8

    The clearest explanation I've ever seen for 260 in bit manipulation. Thank you!

  • @taqimustafa7665
    @taqimustafa7665 5 месяцев назад +5

    Great work again Striver! I wouldnt have ever tried learning DSA if i had never ran onto your channel. It is a request that you please make the string playlist next whenever you have free time(ik its hard to find time alongside doing a fulltime job,but you still do so much for us so thanks a lot).

  • @playwithlinux
    @playwithlinux 2 месяца назад +1

    So nice of you Striver... THANK you so much for this type of content... Even words wouldn't be enough for that. Thanks a million.

  • @amitdahiya7425
    @amitdahiya7425 5 месяцев назад +3

    C++ code with comments for better understanding
    class Solution {
    public:
    vector singleNumber(vector& nums) {
    // brute force using map
    // optimised using bit manipulation bucket
    // approach : we know that all duos xor will be 0 and the unique 2 elements xor will contain
    // nothing but a number which contain bits which are not same in both
    long long numXor=0;
    for(auto it:nums)numXor^=it;
    // now we need to distinguish both the numbers
    // and xor contains all the bits which are not same in both , we just need one different bit
    // taking the rightmost one is fine
    long long rightBit= numXor ^ (numXor &(numXor-1));
    // now take 2 bucket integer which store numbers based on this rightBit
    int a=0,b=0;
    for(auto it:nums){
    // if right bit is set
    if(it&rightBit)a^=it;
    else b^=it;
    }
    return {a,b};
    }
    };

  • @HarchitGulati
    @HarchitGulati 2 месяца назад +2

    finally felt like old videos of striver are back

  • @harshvyas8815
    @harshvyas8815 2 месяца назад +3

    class Solution {
    public:
    vector singleNumber(vector& nums) {
    long num =0;
    for(int i=0;i

  • @SuvradipDasPhotographyOfficial
    @SuvradipDasPhotographyOfficial Месяц назад

    The best explanation ever. The previous one's last solution blew me away... Amazing Striver, done with Bit manipulation today. Will start greedy from Monday. Hope you sgtart the string and stacks queues playlist soon.

  • @vishnupandey3390
    @vishnupandey3390 14 дней назад +1

    here is my python3 code for the given problem 👇
    nums=list(map(int,input("Enter the list : ").split(" ")))
    xor=0
    for ele in nums:
    xor=xor^ele
    bitmask=xor&(xor-1)
    bitmask=bitmask^xor
    num1=0
    num2=0
    for ele in nums:
    if bitmask&ele:
    num1=num1^ele
    else:
    num2=num1^ele
    print(num1,"and",num2,"are the unique numbers out there in the list.")

  • @AS-gf3ci
    @AS-gf3ci 4 месяца назад +2

    vector singleNumber(vector& nums) {

    long xorr = 0; //Taking xorr as long for the case of INT_MIN in nums[i]
    for(auto &it : nums)
    xorr ^= it;

    int rightMostBitTurnedOne = xorr & (-xorr);
    int b1 = 0, b2 = 0; //b1 --> 1st bit is set || b2 --> 1st bit is 0
    for(auto &it : nums) {
    if(it & rightMostBitTurnedOne)
    b1 ^= it;

    else
    b2 ^= it;
    }
    return {b1, b2};
    }

    • @yaswanthmitta8983
      @yaswanthmitta8983 2 месяца назад

      but in the video he said to we need to xor it with intial value to get right most set bit

    • @bhushanthombare1540
      @bhushanthombare1540 2 месяца назад

      @@yaswanthmitta8983 yeah we have to take as rightMostBitTurnedOne=( (rightMostBitTurnedOne & rightMostBitTurnedOne-1)^rightMostBitTurnedOne )

  • @Mojijansari0786
    @Mojijansari0786 3 дня назад

    at 13:00 by first bit he meant bit at index 1 from back (If any one was confused here)

  • @stith_pragya
    @stith_pragya 4 месяца назад +1

    Understood........Thank You So Much for this wonderful video.............🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @Gg69696
    @Gg69696 Месяц назад

    U R the king striver !!

  • @ashmitgupta8039
    @ashmitgupta8039 2 месяца назад

    Legendary Explanation!!

  • @akshithyadav4676
    @akshithyadav4676 5 месяцев назад +2

    Keep code at last as in your old videos ❤🎉

    • @ce003abhimanyu9
      @ce003abhimanyu9 5 месяцев назад

      yes that was very ncessary for us please striver sir

  • @sakthivelR-hb9gr
    @sakthivelR-hb9gr 3 месяца назад +2

    There is an mistake @19:04
    it's not
    rightMost = (xor & (xor - 1)) & (xor); => rightMost = (xor & (xor - 1)) ^ (xor);
    or
    rightMost = xor & -xor is efficent way

  • @hardikpatel352
    @hardikpatel352 2 месяца назад +2

    (xor & (xor - 1)) ^ xor correction in formula

  • @ManojkumarKatta
    @ManojkumarKatta 4 месяца назад

    mind blowing logic

  • @challasusmithachallasusmit9921
    @challasusmithachallasusmit9921 3 месяца назад

    UNDERSTOOD Thank you so much sir

  • @swagcoder
    @swagcoder 4 месяца назад

    Extremely helpful video. 5:54 just a small correction, there are two repeating numbers, hence m = n/2+2

  • @Shivi32590
    @Shivi32590 Месяц назад

    understood

  • @UECAshutoshKumar
    @UECAshutoshKumar 4 месяца назад +1

    Thank you 😊

  • @codingp110
    @codingp110 Месяц назад

    Awesome!

  • @shashankgsharma0901
    @shashankgsharma0901 Месяц назад

    Understood!

  • @MeenakshiSharma-bd3bu
    @MeenakshiSharma-bd3bu Месяц назад +1

    what if we get 4,8 both as unique no. appearing ones only , than they will go to the same bucket ...4^8 in bucket 2

    • @someshchincholkar6501
      @someshchincholkar6501 23 дня назад

      Then rightmost will be 3rd bit(0-based indexing) means differentiating bit will be changed

  • @hardikpatel352
    @hardikpatel352 2 месяца назад

    Understood

  • @user-tk2vg5jt3l
    @user-tk2vg5jt3l 4 месяца назад

    thank you Bhaiya

  • @pranavmisra5870
    @pranavmisra5870 3 месяца назад

    This is goldddd

  • @AanganwadiGuriya
    @AanganwadiGuriya 2 месяца назад

    thanks !

  • @jjjyotijain
    @jjjyotijain 5 месяцев назад

    understood
    🤩

  • @Rahulyadav-sd3oj
    @Rahulyadav-sd3oj 5 месяцев назад

    Thank u sir

  • @pardhi8959
    @pardhi8959 5 месяцев назад

    understood.

  • @shreyxnsh.14
    @shreyxnsh.14 4 месяца назад +1

    why are people asking for code?? It is literally the same as the pseudocode he has written.

  • @AdiCode_Hub
    @AdiCode_Hub 2 месяца назад

    XOR them as you get (naa hindi word ), ❤❤

  • @AanganwadiGuriya
    @AanganwadiGuriya 2 месяца назад

    for rightmost xor&(-xor) will do I think

  • @yunik_developer
    @yunik_developer 4 месяца назад

    19:06 there is a writing mistake the formula is rightmost= ((original-numb & (original-numb-1)^original-numb)

  • @a.gcrazy555
    @a.gcrazy555 2 месяца назад

    How can we think off such solutions .
    There is only one method we have to learn this solution for this particular question ig.

  • @SAACHIPANDEY
    @SAACHIPANDEY 4 месяца назад +1

    9:40

  • @dayashankarlakhotia4943
    @dayashankarlakhotia4943 5 месяцев назад +1

    public int singleNumber (int[]nums){
    int xor=Arrays.stream(nums).reduce((a,b)->a^b).getAsInt();
    int mask=xor& ~(xor-1);
    int[]ans=new int[2];
    for(int num:nums){
    if((num&mask)>0)
    ans[0]^=num;
    else
    ans[1]^=num;
    }
    return ans;
    }
    🎉❤

  • @wojtekgaming7
    @wojtekgaming7 Месяц назад

    Can someone explain me how 14 and 4 got seperated and how we are checking rightmost bit pls do explain

    • @madhu_mohanreddy
      @madhu_mohanreddy Месяц назад +1

      we dont seperate 14 and 4 .xorr = xorr^arr[i] 14 and 4 gets xor , and (xorr&xorr-1)^xorr

  • @NeverGive-Up..26
    @NeverGive-Up..26 Месяц назад

    Us

  • @_The_-_worst_
    @_The_-_worst_ 5 месяцев назад +1

    Once Again
    Make playlist or videos for Competitive programming because I have completed your dsa series 😊

    • @NitinSharma-qx4ff
      @NitinSharma-qx4ff 5 месяцев назад +16

      once again, the world doesn't revolve around you bro

  • @varun1017
    @varun1017 5 месяцев назад

    1st