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).
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.
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}; } };
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
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.")
The previous way when you code at the end of the video was great. Please continue like that .
It's ok. He wants to make it language independent ig.
@@movieskingdom1748 and he might not get c++ viewers also ,bcz most of the time people figure out approach but might face difficulty in coding
@@movieskingdom1748 that's okay but there are no codes available for this playlist either. i wish we at least had the codes accessible to us.
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).
There is a small mistake @19:04
rightmost = (xor & (xor - 1)) ^ xor is the correct formula.
Very great explanation! 🔥🙌
Alternatively u can use xor & -xor
@@shubhrajit2117 after using this formula did we still need to take XOR as long datatype?? or it will work in int
@@AkOp-bf9vm Yes, you need to use long because when xor is -2^31 then -xor=2^31 which is more than INT_MAX
Same I also thinking that
This should get pinned, thanks a tonne man.
The clearest explanation I've ever seen for 260 in bit manipulation. Thank you!
at 13:00 by first bit he meant bit at index 1 from back (If any one was confused here)
1:20: using hash map (brute force)
6:05: bitwise approach (optimised)
18:05: code for optimised approach
Thank you, very helpful;
thanks
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.
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.
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};
}
};
finally felt like old videos of striver are back
Thank you bro for clearing the bits manipulation
concept
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};
}
but in the video he said to we need to xor it with intial value to get right most set bit
@@yaswanthmitta8983 yeah we have to take as rightMostBitTurnedOne=( (rightMostBitTurnedOne & rightMostBitTurnedOne-1)^rightMostBitTurnedOne )
great video as always sir
Understood........Thank You So Much for this wonderful video.............🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
Legendary Explanation!!
Extremely helpful video. 5:54 just a small correction, there are two repeating numbers, hence m = n/2+2
m = (n-2/2) +2 which is equal to n/2 +1
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
class Solution {
public:
vector singleNumber(vector& nums) {
long num =0;
for(int i=0;i
U R the king striver !!
Thank you 😊
Keep code at last as in your old videos ❤🎉
yes that was very ncessary for us please striver sir
UNDERSTOOD;
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.")
Understood 😀
finding rightmost set bit will give you error so use this
int rightmost = 1;
while ((xorr & rightmost) == 0) {
rightmost
(xor & (xor - 1)) ^ xor correction in formula
mind blowing logic
UNDERSTOOD Thank you so much sir
Can we use bucket method here
Anyone is here that,
it happens to me or others that the optimised approach is too tough using hashmap is simple, down and dusted.
How can we think off such solutions .
There is only one method we have to learn this solution for this particular question ig.
understood
🤩
understood.
for rightmost xor&(-xor) will do I think
19:06 there is a writing mistake the formula is rightmost= ((original-numb & (original-numb-1)^original-numb)
Understood!
Awesome!
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
Then rightmost will be 3rd bit(0-based indexing) means differentiating bit will be changed
Understood
Thank u sir
XOR them as you get (naa hindi word ), ❤❤
thank you Bhaiya
thanks !
This is goldddd
Can someone explain me how 14 and 4 got seperated and how we are checking rightmost bit pls do explain
we dont seperate 14 and 4 .xorr = xorr^arr[i] 14 and 4 gets xor , and (xorr&xorr-1)^xorr
there is a slight mistake , While writing code , rightmost will be (xorr & xorr -1 ) ^ xorr;
Java Solution
public static int[] SingleNumber3(int arr[]) {
int xor = 0;
for (int i = 0; i < arr.length; i++) {
xor ^= arr[i];
}
int rightMost = xor & -xor;
int b1 = 0, b2 = 0;
for (int i = 0; i < arr.length; i++) {
if ((arr[i] & rightMost) != 0) {
b1 ^= arr[i];
} else {
b2 ^= arr[i];
}
}
return new int[] { b1, b2 };
}
why are people asking for code?? It is literally the same as the pseudocode he has written.
9:40
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;
}
🎉❤
Once Again
Make playlist or videos for Competitive programming because I have completed your dsa series 😊
once again, the world doesn't revolve around you bro
peak
1st
13:28 "FUCK"
java code
class Solution
{
public int[] twoOddNum(int Arr[], int N)
{
// code here
int xor=0;
for(int i=0;i
Understood
understood
understood