Please leave a small comment if you understand by spending your time here, every comment motivates me more :) C++ Code: github.com/striver79/SDESheet/blob/main/permutationsCppApproach-2 Java Code: github.com/striver79/SDESheet/blob/main/permutationsJavaApproach-2 Approach-1 Video Link: kzbin.info/www/bejne/j3yaaXmLaquZoNk Instagram(For live sessions): instagram.com/striver_79/
@ghj72752 жыл бұрын
Can you please check the below code for Permutation - II problem on leetcode, It fails for [1,2,2,3,3]. class Solution { List res = new ArrayList(); public List permuteUnique(int[] nums) { Arrays.sort(nums); f(0, nums, nums.length); return res; } public void f(int ind, int nums[], int n) { if(ind == n-1) { List li = new ArrayList(); for(int i : nums) li.add(i); res.add(li); return; } for(int i = ind; i < n; i++) { if(i != ind && nums[i] == nums[i-1]) continue; swap(nums, ind, i); f(ind+1, nums, n); swap(nums, ind, i); } } public void swap(int nums[], int i, int j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t; } }
@ashwinikumar39882 жыл бұрын
@@ghj7275(i!=ind && nums[i]==nums[i-1] ) works only when array is sorted.here swapping distorts the sorted array so this is not gonna work.
@Anonymous-uj3jx2 жыл бұрын
A year back when I saw this question on gfg, I spent nearly 5 hours understanding this solution, and now after seeing your approach I could code it myself, you are a legend man. And you are giving all this for free, I pray to God that you will be blessed with good health and prosperity.
@pcgaming65977 ай бұрын
Thank you for this comment cause I though, for me only it's taking 5 hours to understand a question. I think I am wrong now 🤗
@subhadipmaity32532 жыл бұрын
Sir I think you have no need to say "Please please like this video, and subscribe this channel", those who really understands coding will definitely give value and respect to you. Thank You so much Sir for all the amazing series.
@mohammedwaseem85993 жыл бұрын
Hello bhaiya i hope you are doing extremely well
@rishabh_pant Жыл бұрын
😁
@infinity2creation551 Жыл бұрын
Ayeen
@Paradox8282710 ай бұрын
chup k2a
@naveenkamagoud9 ай бұрын
@@Paradox82827 😂
@Mohd-123354 ай бұрын
😂
@siddharthkhandelwal933 Жыл бұрын
Thanks for all of your videos. The explanations are great.
@abhi007rider2 жыл бұрын
Completed the whole Tree,Graph and Recursion series. Striver you are a gem
@indranilthakur36052 жыл бұрын
how much time it took for you?
@Yag1162 жыл бұрын
did it build your programming logic?
@vishalgowrav2 жыл бұрын
I solved this question by my own using this approach just by watching first 6 minutes of video,Felt very happy afterwards. Your explainations and approaches are top notch.Thank u for this series Striver
@AVIS_112 жыл бұрын
this is so true'
@zeeshanequbal62273 жыл бұрын
BONUS: This method can also be used to solve Permutation II problem of Leetcode, where duplicate elements could be present in the array. The only thing to take care in this case is that we are dependent on the sorted order of Array to check for and skip duplicates, so either don't pass the array as reference or restore the original array before exiting. Here is the C++ solution for Permutations-II using this approach. class Solution { public: // Dont pass nums by refernce, cause that will mess up our sorted order. // Or, if passing by reference, then swap ALL positions back so that array remains sorted. void solve(vector &nums, int idx, vector &res) { // Base Case int n = nums.size(); if(idx == n) { res.push_back(nums); return; } // Recursive Step for(int i = idx; i < n; i++) { if(i != idx && nums[i] == nums[idx]) continue; swap(nums[i], nums[idx]); solve(nums, idx + 1, res); } for(int i = n - 1; i > idx; i--) // Dont need to do this if passing nums by value. swap(nums[i], nums[idx]); } vector permuteUnique(vector& nums) { vector res; sort(nums.begin(), nums.end()); solve(nums, 0, res); return res; } };
@nitwaalebhaiya3 жыл бұрын
for(int i = n - 1; i > idx; i--) // Dont need to do this if passing nums by value. swap(nums[i], nums[idx]); Thanks. This is awesome.
@samcooper-023 жыл бұрын
@@nitwaalebhaiya Not passing leetcode test case. What is wrong in this. Here is my java code: class Solution { private void recurPermute(int index, int[] nums, List ans) { if(index == nums.length) { // copy the ds to ans List ds = new ArrayList(); for(int i = 0;i
@Rajat_maurya3 жыл бұрын
@@samcooper-02 class Solution { public: void f(vector &v1,vector &v2,int i) { if(i==v1.size()) { v2.push_back(v1); return ; } for(int j=i;ji) && v1[j]==v1[j-1]) continue; swap(v1[j],v1[i]); f(v1,v2,i+1); swap(v1[j],v1[i]); } } public: vector permuteUnique(vector& v1) { vector v2; sort(v1.begin(),v1.end()); f(v1,v2,0); return v2; } }; can you please help me whats wrong in this solution for permutation II
@sohailshaik92 жыл бұрын
@zeeshan Can you please explain the reverse swapping I'm not understanding that part
@adityamahimkar61383 жыл бұрын
The moment I heard swapping, I completed the code while only half video was over. I'm showing growth, thanks to you bro :) ✨
@AbhishekYadav-ni5ts3 жыл бұрын
Brother what does vector means in line 16 ..... Does it means that the return type will be vector... Please explain to me..
@AbhishekYadav-ni5ts3 жыл бұрын
Is it returning multidimensional vector...?? I am confused please help
@adityamahimkar61383 жыл бұрын
@@AbhishekYadav-ni5ts yes it is a nested vector or multidimensional vector
@AbhishekYadav-ni5ts3 жыл бұрын
@@adityamahimkar6138 ohh... Thank u bhai 🙏
@vishalgowrav2 жыл бұрын
Even i did the same bro!
@tanmaysinghal83702 жыл бұрын
damn i just love this guy, he explains full recurssion tree till end.... HATS OFF TO YOU BROTHER
@aakashyadav62283 жыл бұрын
Bro please complete the placement series before the placement season. I can guarantee you that this series will be the most watched series in the coding community in next few years. I know you have your health issues and job as well. But please help us all out whenever free. Kudos to you and keep up the good work !
@Believer... Жыл бұрын
i am speechless bro!! no one on youtube want to put that much hard efforts to make us understood. you clear the concept level by level which impact our problem solving tremendously.
@adityasankhla1433 Жыл бұрын
Holy Moly. Solved the question after watching just the first 2 mins of the video. Crystal clear explanation and intuition building striver!
@sandeepnallala483 жыл бұрын
raj bro u are really master of Recursion. the way you draw the Rec tree make things easy to understand brother.
@notdumb31822 жыл бұрын
Hey, I just want to let you know if I make it to good company you will be the main reason behind it. This videos are real gem hope they stay free here on KZbin. Wish you a very good life ahead
@geekyaman22973 жыл бұрын
You are none other than god/ best guru for any tier 3 student! Jitna thanx kru kam h bhai apke liye🙏❤❤❤❤
@deweshjha81203 жыл бұрын
that's true
@ritikashishodia6752 жыл бұрын
True bro he is inspiration to all
@samwaadvivaad86072 жыл бұрын
guruji maan gaye apko! you explained each line i watched 3 video's and i was confused how the i is moving to its next place before recursive call and you just made it clear .....thanks man!
@AYUSHKUMAR-xj4wc Жыл бұрын
This is the cleanest approach to solve this problem. I would prefer this one. Thanks Striver❤❤❤❤
@indroneelgoswami56546 ай бұрын
Earlier I was not able to code. But, the good thing is that I can code myself after watching the logic only (without watching the java solution). Sir you are great!!
@aryansinha18182 жыл бұрын
You explain things at a different level, which is very easy to understand. Thank you, sir. Love and respect always.
@Manishgupta200 Жыл бұрын
Amazing Striver ❤ I'm preety much unsure about TC and SC but now clear after watching your tutorial
@stith_pragya Жыл бұрын
UNDERSTOOD......Thank You So Much for this wonderful video............🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@shubhamkevadiya91422 жыл бұрын
Best Approach. Can't find more simpler than this !! Thank you Striver
@govindmajage23173 жыл бұрын
Perfect recursion series tysm bhaiya👍🙏
@athangkulkarni8245 Жыл бұрын
Striver, you are an absolute jod! Watched initial explanation and tried to code on my own and coding never felt this easy! Thanks man
@rahulgovindkumar31053 жыл бұрын
You are videos are really really really helping me . Plse......Keep making videos like this
@shastriamisha3 жыл бұрын
Amazing explanations, loving the recursion playlist, cant wait to start DP :) Thank you very much for this amazing content.
@sumeetubale3923 Жыл бұрын
A Big Thank You to Striver Bhaiya for this Amazing series !!!❤❤❤
@saketjaiswalSJ Жыл бұрын
2 years old video still ( striver u r literally god brother thank u from the bottom of my heart will meet u surely )😀😀
@kratika_agrawal283 жыл бұрын
You are videos are really helping me . Keep making videos like this
@studynewthings1727 Жыл бұрын
Thankyou so much STRIVER, I have understood all the code very well. I able to draw all the function calls made by the function again and again.
@abhinavkaushik3504Ай бұрын
Never thought swapping is so useful. Thanks much
@ahrazmalik58073 жыл бұрын
One of the best teacher on youtube❤️
@awanishtiwari86832 жыл бұрын
I have much fear 😨 that how does these recursive calls flow but with the cute explanation from your videos I got to know it very efficiently Thanks alot for your efforts
@kushagraverma2772 Жыл бұрын
thanku sir , i solved the whole question by myself just after listening the hint of swapping technique.
@rudra_anand Жыл бұрын
Your teaching skills are exceptional.
@San-ix7ki2 жыл бұрын
studied recursion from many resources but was not able to get how to write code from tree there I was able to make tree from code but after striver's series I am able to do that finally...hats off to this man thanks alot..
@bmishra987 ай бұрын
Base case can also be if(index == candidates.size() - 1) {...}, as when 'index' reaches 'candidates.size() - 1', no change in position of elements occur on further recursive call. Thus, the 2nd last level of recursion can also be treated as the base case.
@lomeshdaheria99603 жыл бұрын
Thank you bhai for your great efforts😁🙏❤️
@anujmishra7782 жыл бұрын
raj bhai i really enjoying learning your this series , aap ka video dekh kar lagta hai aap har ek topic ko samjhane me bahot mehnat karte ho bhai, thanks a lot bhai
@sankalpsharma48903 жыл бұрын
I was trying this question from long time. Thank you so much...
@TharunMettala Жыл бұрын
Thanks for this video man!!! Keeping going forward❤
@sonusah66202 жыл бұрын
No words to express.....GOAT for a reason
@thinker-o5p2 жыл бұрын
god level teaching you cleared all my doubts in one shot
@Hari-mm9eo2 жыл бұрын
You are explaining it more clear than others, cheers mate!
@pranavm0022 жыл бұрын
This is very smart solution...probably a solution that will make you stand out!,
@gandhijainamgunvantkumar67832 жыл бұрын
Thank you so much bhaiya for such a crystal clear and amazing explanation :)
@parthsalat2 жыл бұрын
Thanks God, for making Striver
@devinpadron5 Жыл бұрын
Time and space complexity 13:34
@chidambarjoshi3470 Жыл бұрын
I have tried another approch using emplace back, vector ans; sort(nums.begin(), nums.end()); do { ans.emplace_back(nums); }while(next_permutation(nums.begin(),nums.end())); return ans;
@shanuraj62392 жыл бұрын
funny thing was that for me it was the first idea i had before the brute force approach😅
@GeniuslyTensai2 жыл бұрын
Op explanation!!!! When understood the intuition it was really great.
@akshitsingh2598 Жыл бұрын
why do we need to wait for the pointer to go out , we are getting all permutations when pointer is at n-1 , so that could be our base condition.
@neyovyas39923 жыл бұрын
Please try to upload 1 video daily it will be so helpful
@prathamsagar5353 Жыл бұрын
I like ur style of explaining and it all goes in my head. BUT I am afraid if I will be able to figure all this out in an interview???
@mohitagarwal18883 жыл бұрын
This was better in terms of consuming less space as well as easier understanding.
@awanishtiwari86832 жыл бұрын
I hope you are doing extremely well 😀😀😌😌
@ShubhamPatidar163 жыл бұрын
Thank u so much bhaiya and please bring backtracking problems
@krishnakanttiwari51726 күн бұрын
Thank You So Much Sir
@arshdeep0112 жыл бұрын
Bro you are the best 😍🥰🥰🥰
@ksanjay66510 ай бұрын
Most underrated channel 😞😞😞
@abhijeetbasfore68162 жыл бұрын
I solved this question without watching this video. Awesome tutorials
@coefficient13593 жыл бұрын
Understood 👍
@anmolverma0752 жыл бұрын
At 15:18 , why did we take the ds separately , we could have called it together in the function call. Also why did we use another loop to add the elements in the ds?
@ajinkyadeshpande39922 жыл бұрын
Such a clean solution. Perfection.
@shubham76682 жыл бұрын
Base condition could be (index=nums.size()-1) Coz basically we are doing nothing in last swap
@saisubhank801110 ай бұрын
I dint understand why we need to reswap? It would be great if you can explain.
@shibamde2664Ай бұрын
because when we swapped for example in first step like 123 to 213 then we called function, and func returned here with 213 but for next swap we need to get back 123 so that we can do 321 so re swap was done
@kaichang81864 ай бұрын
understood, thanks for the perfect video
@rohanraonallani5613 жыл бұрын
Also,try to discuss the heap's algorithm if possible
@popli10 Жыл бұрын
best explanation love you bhaiya
@debangshubanerjee13112 жыл бұрын
why is it rec(index+1) and not rec(i+1), in both combination sum 2 and subset 2 the recursion was rec(i+1) similar approach, confused here...
@amulop4 күн бұрын
Same
@prateekkumar49659 ай бұрын
solving question ❌ Building Login✅ 🙇♂🙇♂🙇♂🙇♂
@hiteshpatwal96889 ай бұрын
Logic ❌ Login Page✅
@neyovyas39923 жыл бұрын
Nice explanation understood both the approach
@Yogamindmastery7 ай бұрын
tu es un genie
@UECAshutoshKumar Жыл бұрын
Thank you sir
@techcode356 Жыл бұрын
Thank YOU !!! It was really helpful
@Atuljyotisagar3 жыл бұрын
What change to existing code will give us unique permutaions??
@GhostVaibhav Жыл бұрын
Understood🔥
@SahilSingh-pc1vd3 жыл бұрын
Why are we not maintainig an extra ds(vectords) to store elements then push in our final ans like in previous questions???
@adityamahimkar61383 жыл бұрын
The reason is we are swapping it in the input array so no requirement of additional storage and also after the work is down we again swap while backtrack, so thus the original array is produced :)
@ShivamGupta-cx3hy3 жыл бұрын
Thank You so Much
@A_Myth9637 ай бұрын
should i memorise these concepts... like i can code a concept easily but i can't think of concept like these on my own..what should i do?
@sumitSharma-ed5mi3 жыл бұрын
very helpful and easy to understand.
@MdSakib-w3s4t11 ай бұрын
Great great great 😊
@sarthak_dms2 жыл бұрын
man this trick was amazing
@aryangoyal22523 жыл бұрын
i have watched till now, solved and understood every approach but confuse when to apply which ie looping, picking not picking and swap
@jeeldasvani50153 жыл бұрын
watch aditya verma's recursion series for foundation then watch strivers series
@sairamsudireddy61914 ай бұрын
coming to time complexity -> isnt the for loop complexity already included in n! ? I understood that for every permutation to transfer into ans it takes n! * n , but i believe for loop complexity is already included in n!
@shwetanknaveen3 жыл бұрын
No need for additional data structure ds while pushing in ans.....below is a more neat code....btw it goes unsaid that your explanations are just beyond words //Time complexity O(n! x n) //Space complexity O(n) class Solution { public: void solve(vector &nums,int ind,vector &ans) { if(ind == nums.size())//if index is crossing the array boundary then push the current state of permutated numbers //in the array to ans { ans.push_back(nums); return; } for(int i=ind;i
@manozrevella24732 жыл бұрын
for(int i=ind;i
@AbhishekKumar-yv6ih3 жыл бұрын
There is one big benefit of the first approach, it can even work even when we have duplicate elements in the original array(Permutations II on leetcode). Just the value of map will be int instead of boolean. Is that correct?
@zeeshanequbal62273 жыл бұрын
We can solve even permutations-II problem using this approach. Checkout my above comment for solution and logic. :)
@pratikkore79477 ай бұрын
I did have a thought about using swapping but I couldn't be sure that it would produce all permutations without duplicates.... still not sure how it's exhaustive
@amitasjofficial Жыл бұрын
sir i have only one question ? ki aapne ye sab cheeze kha se seekhi thi aur seekhane ka kya tarika tha ???
@gunratnamore2 жыл бұрын
thanks striver !!! all doubts cleared :).
@rumiNITPatna5 ай бұрын
thank u so much striver!
@SuperWhatusername2 жыл бұрын
Thank you Striver
@deepakchowdary81143 жыл бұрын
Bro I am preparing for placements ,sde sheet is enough ? or should i have to practice from interview bit plzz replyy
@Ram-vg5fu3 жыл бұрын
Loved ur videos.. when will u resume doing sde sheet pls reply bro 🙂
@chepuridheeraj55466 ай бұрын
Thanks, understood!
@harshagarwal12183 жыл бұрын
Will this work,if given to print permutations in lexicographical order?
@gaishiya76963 жыл бұрын
yeah but we need to sort the input string before hand
@adityan53022 жыл бұрын
Python solution : Only reffer if you face difficulty in forming the code : class Solution: def permute(self, arr: List[int]) -> List[List[int]]: res = [] n = len(arr) def solve(ind): if ind>=n: res.append(arr.copy()) return for i in range(ind, n): arr[ind], arr[i] = arr[i], arr[ind] solve(ind+1) arr[ind], arr[i] = arr[i], arr[ind] solve(0) return res