L14. Remove K Digits | Stack and Queue Playlist

  Рет қаралды 22,668

take U forward

take U forward

Күн бұрын

Пікірлер: 56
@manishnaidu30
@manishnaidu30 3 ай бұрын
Hey striver, learning so much from this series, thank you first of all, and another issue I wanted to tell is that there are no articles and linked youtube videos in the website, Hope they are done soon as you are doing this series so that it is helpful for people who haven't checked this playlist on youtube yet.
@brokegod5871
@brokegod5871 3 ай бұрын
While pushing the st.top() to the res, use res.push_back(st.top()) instead of res = res + st.top() for leetcode, otherwise you'll get a memory limit exceeded error. If I have to guess, it's because string append (+) has a O(string size) where a new string is created and then appended whereas push_back is only O(1)
@KartikeyTT
@KartikeyTT 3 ай бұрын
my code worked fine even after using res + st.top() //here is the code class Solution { public: string removeKdigits(string nums, int k) { stack st; for(int i=0; i
@pranavmisra5870
@pranavmisra5870 3 ай бұрын
@@KartikeyTT it would work but using push-back gives better space complexity.
@KartikeyTT
@KartikeyTT 3 ай бұрын
@@pranavmisra5870 bro space complexity does not depend on that
@glyoxal1933
@glyoxal1933 2 ай бұрын
thanks
@sukhii0220
@sukhii0220 Ай бұрын
thanks brother
@Roshan__3006
@Roshan__3006 3 ай бұрын
Great sir, I just started downloading and you just uploading these videos which Faster than BSNL
@206-tusharkantimukherjee3
@206-tusharkantimukherjee3 9 күн бұрын
This question is king of edge cases
@NetajiSaiSuru
@NetajiSaiSuru 2 ай бұрын
Exploring those Edge Cases and handling them is not everyone's cup of tea ❤‍🔥@Striver Kudoos!!
@ShahNawaz-cx3pi
@ShahNawaz-cx3pi 3 ай бұрын
In some problems , brute force solution is more difficult that optimal solution in terms of implementation. BTW------ Brute force solution: To remove k digits from the number, we can explore all possible combinations and choose the smallest number. This involves generating all subsequences of length n - k and selecting the smallest one For Generating all the subsequences you can watch the striver's recursion playlist (There he has taught pick & non-pick method , after learning that method, recursion on arrays will become cakewalk).
@darkwarrior6767
@darkwarrior6767 2 ай бұрын
Instead of using stack to store answer you can directly use string and do operations on it using push_back and pop_back and back
@trashcan-md7cw
@trashcan-md7cw Ай бұрын
Instead of using a stack of characters, It is better to use a String as a stack like we used a list as a stack in asteroid collision... So we need not reverse the stack just remove the leading zeros and return it :) Happy Coding:) CODE string removeKdigits(string num, int k) { string st = ""; // Use a string as the stack int n = num.length(); // Traverse each digit in the string for (int i = 0; i < n; ++i) { // Pop digits from the stack if they are greater than the current digit // and we still have digits to remove (k > 0) while (!st.empty() && st.back() > num[i] && k > 0) { st.pop_back(); k--; } // Push the current digit to the stack st.push_back(num[i]); } // If k digits were not removed, remove from the end of the stack while (k > 0) { st.pop_back(); k--; } // Remove leading zeros int start = 0; while (start < st.size() && st[start] == '0') { start++; } // Get the resulting number without leading zeros string result = st.substr(start); // If the result is empty, return "0" return result.empty() ? "0" : result; }
@apmotivationakashparmar722
@apmotivationakashparmar722 Ай бұрын
Understood everything striver 😀😀
@radhepatel6876
@radhepatel6876 2 ай бұрын
Java Code: BTW This question is hard not medium class Solution { public String removeKdigits(String num, int k) { Stack st = new Stack(); String result = ""; for(int i=0;i0 && (num.charAt(i)-'0')0){ st.pop(); k-=1; } if(st.isEmpty()){ return "0"; } while(!st.isEmpty()){ result+=st.pop(); } String res = ""; int index; for(index=result.length()-1;index>0;index--){ if(result.charAt(index)!='0'){ break; } } for(int i=index;i>=0;i--){ res+=result.charAt(i); } return res; } }
@TOI-700
@TOI-700 21 күн бұрын
JAI HIND veere | darna nhi h | ek call kar kabhi bhi available 24/7 for you veere
@yoddha621
@yoddha621 22 күн бұрын
Mast maza agaya
@shamanthhegde2820
@shamanthhegde2820 2 ай бұрын
Hey Striver, I was able to solve this on my own thank you for that. to make it more simpler i removed the leading zero while inserting the numbers... the logic is in case the stack is empty and i am going to insert a zero that doesn't make sense because that number is going to turn out to be leading zero that's all public String removeKdigits(String num, int k) { Stack st = new Stack(); int charPopped = 0; String ans = ""; for(char ch:num.toCharArray()) { while(!st.isEmpty() && st.peek() > ch && charPopped < k) { st.pop(); charPopped++; } if(st.isEmpty() && ch == '0') continue; st.push(ch); } while(!st.isEmpty() && charPopped < k) { st.pop(); charPopped++; } if(st.isEmpty()) return "0"; int n = st.size(); for(int i=0; i
@oyeesharme
@oyeesharme Ай бұрын
thanks bhaiya
@amitpandey8382
@amitpandey8382 2 ай бұрын
I think time complexity will be O(4N)+O(K) .Inner while loop is also contributing o(N) time
@BeAcoder1011
@BeAcoder1011 3 ай бұрын
@DeadPoolx1712
@DeadPoolx1712 Ай бұрын
UNDERSTOOD;
@saumay-z1
@saumay-z1 3 ай бұрын
So many edge cases.........Uffffff
@shreyxnsh.14
@shreyxnsh.14 Ай бұрын
yeah, a lot of 'em
@killerboy2387
@killerboy2387 3 ай бұрын
Hey,striver we wants Heap playlist.please....
@arunraj4383
@arunraj4383 Ай бұрын
@subee128
@subee128 3 ай бұрын
Thanks
@tamoghnasaha2667
@tamoghnasaha2667 Ай бұрын
The smallest number should be 1122 instead of 1219?
@ayushaggarwal906
@ayushaggarwal906 Ай бұрын
you cannot change the order
@manas4656
@manas4656 28 күн бұрын
here order should be maintained, we cannot change the position
@KartikeyTT
@KartikeyTT 3 ай бұрын
tysm sir
@SibiRanganathL
@SibiRanganathL 2 ай бұрын
Understood
@Shivi32590
@Shivi32590 2 ай бұрын
understood
@navinvenkat3404
@navinvenkat3404 Ай бұрын
C++ sol => class Solution { public: string removeKdigits(string num, int k) { stack st; int n = num.size(); for(int i=0;i0 && (st.top() - '0') > (num[i] - '0')){ st.pop(); k--; } st.push(num[i]); } while(k>0 && !st.empty()){ st.pop(); k--; } string result = ""; while(!st.empty()){ result += st.top(); st.pop(); } reverse(result.begin() , result.end()); int start = 0; while(start < result.size() && result[start] == '0'){ start++; } result = result.substr(start); return result.empty() ? "0" : result; } };
@shreyxnsh.14
@shreyxnsh.14 Ай бұрын
Thanks, was able to do this by myself, here is the C++ code: class Solution { public: string removeKdigits(string num, int k) { stack st; for(const char& c: num){ while(!st.empty() && c0){ st.pop(); k--; } st.push(c); } while(k>0){ st.pop(); k--; } string res = ""; while(!st.empty()){ res.push_back(st.top()); st.pop(); } reverse(res.begin(), res.end()); int i = 0; while(res[i] == '0'){ i++; } res = res.substr(i); if(res == "") return "0"; return res; } };
@irfanmohammad2132
@irfanmohammad2132 3 ай бұрын
Memory Limit Exceeded
@charuprabha8714
@charuprabha8714 3 ай бұрын
Hi but how to think that we have to use stack to solve this problem🙂
@shreyxnsh.14
@shreyxnsh.14 Ай бұрын
you dont need to, you can do this by creating a new string and operating on it
@KalingaAbhisek
@KalingaAbhisek Ай бұрын
Java Code class Solution { public String removeKdigits(String num, int k) { Stack st = new Stack(); for(int i=0;inum.charAt(i)-'0' && k>0){ st.pop(); k--; } st.push(num.charAt(i)-'0'); } while(k>0 && !st.isEmpty()) { st.pop(); k--; } String res=""; while(!st.isEmpty()){ res+=st.pop(); } StringBuilder sb = new StringBuilder(res).reverse(); while(sb.length()>0 && sb.charAt(0)=='0'){ sb.deleteCharAt(0); } return sb.length()>0?sb.toString():"0"; } }
@Messi23485
@Messi23485 3 ай бұрын
Can anyone please explain why he minus 0 in while condition during comparison of stack top with current character of string
@shashank_0807
@shashank_0807 3 ай бұрын
To convert char to int.
@valendradangi1822
@valendradangi1822 2 ай бұрын
It will work even if you don't do that
@shreyxnsh.14
@shreyxnsh.14 Ай бұрын
Solution without stack: class Solution { public: string removeKdigits(string num, int k) { string newstr = ""; for(const char& c: num){ while(!newstr.empty() && c0){ newstr.pop_back(); k--; } newstr.push_back(c); } while(k>0){ newstr.pop_back(); k--; } int i = 0; while(newstr[i] == '0'){ i++; } newstr = newstr.substr(i); if(newstr == "") return "0"; return newstr; } };
@MJBZG
@MJBZG 3 ай бұрын
your new lectures are becoming difficult to understand
@satyen4659
@satyen4659 3 ай бұрын
but topics are also complex
@shreyxnsh.14
@shreyxnsh.14 Ай бұрын
this should have been easy if you've been following his playlist
@sanatgupta1562
@sanatgupta1562 Ай бұрын
Nobody asked for your opinion ​@@shreyxnsh.14
@sanatgupta1562
@sanatgupta1562 Ай бұрын
Nobody asked for ur opinion ​@@shreyxnsh.14
@valendradangi1822
@valendradangi1822 2 ай бұрын
#include using namespace std; class Solution { public: string removeKdigits(string num, int k) { // char imp stack st; int n = num.size(); int removed = 0; for (int i = 0; i < n; i++) { while (!st.empty() && removed < k && st.top() > num[i]) // Don't do >= Dry Run 1,2,2,2,2,5 // k > 0 && st.top() - '0' > num[i] > '0' { removed++; st.pop(); } st.push(num[i]); } while (removed < k) { st.pop(); removed++; } if(st.empty())return "0"; // Makes code faster anyways // second last if can handle it int idx = st.size(); string ans(idx, '%'); // Prevents reversing the string while (!st.empty()) { ans[--idx] = st.top(); st.pop(); } int i = 0; while (i < ans.size() && ans[i] == '0') i++; // The erase function removes i characters // from given index (0 here) ans.erase(0, i); // If are using reversal // while(ans.size() > 0 && ans.back() == '0') // ans.pop_back(); if (ans.empty()) return "0"; return ans; } }; // This is a good question to study edge cases. // 1) k char may not be removed // 2) ans may contain leading zeroes // 3) // TC => O(N) + O(K) + O(N) + O(N) // SC => O(N) + O(N) int main(){ return 0; }
@rutujashelke4208
@rutujashelke4208 2 ай бұрын
Understood
@KartikeyTT
@KartikeyTT 3 ай бұрын
tysm sir
@aryankumar3018
@aryankumar3018 2 ай бұрын
understood
L15. Stock Span Problem | Stack and Queue Playlist
19:21
take U forward
Рет қаралды 22 М.
Remove K digits | Build lowest number | Leetcode #402
15:30
Techdose
Рет қаралды 89 М.
1, 2, 3, 4, 5, 6, 7, 8, 9 🙈⚽️
00:46
Celine Dept
Рет қаралды 40 МЛН
ROSÉ & Bruno Mars - APT. (Official Music Video)
02:54
ROSÉ
Рет қаралды 271 МЛН
The Singing Challenge #joker #Harriet Quinn
00:35
佐助与鸣人
Рет қаралды 9 МЛН
Seja Gentil com os Pequenos Animais 😿
00:20
Los Wagners
Рет қаралды 90 МЛН
L16. Sliding Window Maximum | Stack and Queue Playlist
19:58
take U forward
Рет қаралды 27 М.
Remove K Digits | Intuition | Dry Run | Leetcode 402 | codestorywithMIK
35:07
Marriage Material | Stand Up Comedy By Rajat Chauhan (56th Video)
18:33
MR BEAST PARODY 🤑 Ft. INDIAN CREATORS | CARRYMINATI
22:01
CarryMinati
Рет қаралды 61 МЛН
L3. Prefix, Infix, and Postfix Conversion | Stack and Queue Playlist
50:47
L12. Largest Rectangle in Histogram | Stack and Queue Playlist
31:42
take U forward
Рет қаралды 38 М.
1, 2, 3, 4, 5, 6, 7, 8, 9 🙈⚽️
00:46
Celine Dept
Рет қаралды 40 МЛН