L6. Next Greater Element - II | Stack and Queue Playlist

  Рет қаралды 40,491

take U forward

take U forward

Күн бұрын

Пікірлер: 62
@Demon01Editz
@Demon01Editz 4 ай бұрын
we can do it with below code also it is using same concept but we will simply start with max element in array (because we know that its NGE will be -1 and we know that if we don't find any other element who is greater than our current element then we know maxelement will be our answer) then we will traverse through other elements like NGE-I video(because we know the ending) class Solution { public: vector nextGreaterElements(vector& nums) { int maxele = INT_MIN; int maxidx = -1; int n = nums.size(); for(int i=0;i(maxidx-n-1);i--){ int idx = i; if(idx nums[idx]){ nge[idx] = st.top(); st.push(nums[idx]); } else{ while(!st.empty() && st.top()
@onelove177
@onelove177 4 ай бұрын
Literally I have at least 10 videos to get this but I didn't get! But sir Striver!😍 Thank you!
@Kshitijsingh-n7f
@Kshitijsingh-n7f 2 ай бұрын
MY APPROACH--> approach-1(optimal) TC-O(3N) SC-O(2N) [including memory for storing returning answer] //push all ele from n-2 to start then traverse from the n-1 to the start in similar way as NGE 1 problem since in NGE 1 problem we didnt have any greater ele for the last so we started from last and just check next left and left updating the their maxes but here since last ele can also have the NGE so we have put all elements that can be NGE of last ele then we do like normal NGE 1 problem solution vector nextGreaterElements(vector& nums) { stacks; int n=nums.size(); vectorv(n); for(int i=n-2;i>=0;i--){ s.push(nums[i]); } for(int i=n-1;i>=0;i--){ while(!s.empty() && s.top()
@ashmitshelke1444
@ashmitshelke1444 Ай бұрын
thats what I did too
@SomrikTapaswi
@SomrikTapaswi 3 ай бұрын
loved the way you made us understand !
@Jai_Shri_Krishna_Shri_radhe
@Jai_Shri_Krishna_Shri_radhe 4 ай бұрын
@Take you forward Small optimisation :- Why we even need to push 2n elements push only till (i < n) Then we would not waste extra time in pushing and popping...
@amanasrani6405
@amanasrani6405 6 күн бұрын
Thank You So Much Sir for this Amazing Lecture
@pullurupraveen9315
@pullurupraveen9315 Ай бұрын
we can put the all the elements in order expect the last element to get compared then perform the operation using the NGE (using the stack)here the time complexity at worst case becomes like 0(2n+1) and space complexity also 0(n+2).
@atulwadhwa192
@atulwadhwa192 Ай бұрын
The better solution was the goto hint to approach the optimal approach. Striver OP 🔥
@alonbrim
@alonbrim 27 күн бұрын
Very clear explanation! Thanks a lot!
@vaarigupta6332
@vaarigupta6332 Ай бұрын
Awesome explaination
@jenishadsouza907
@jenishadsouza907 2 ай бұрын
Excellent explanation!
@amankumarsingh3995
@amankumarsingh3995 4 ай бұрын
Excellent video
@apmotivationakashparmar722
@apmotivationakashparmar722 2 ай бұрын
Thank you for excellent explaination.
@Akash-Bisariya
@Akash-Bisariya 2 ай бұрын
very nicely explained 😍😍
@aravatanish3170
@aravatanish3170 2 ай бұрын
Striver please upload Heap series
@rushidesai2836
@rushidesai2836 2 ай бұрын
Smart solution. Wow.
@shivam_prakash_0108
@shivam_prakash_0108 3 ай бұрын
excellent explanation
@sauravfarkade1928
@sauravfarkade1928 4 ай бұрын
Thankyou bhaiya!!
@shubhamlifearts8138
@shubhamlifearts8138 4 ай бұрын
Thanks bhaiya for great content ❤
@alessandrocamilleri1239
@alessandrocamilleri1239 3 ай бұрын
Thank you and great explanation. Can't you just traverse the array circularly in reverse from the max element index? That way you would just add an O(n) to the original TC of NGE1. I coded it as follows: vector nextGreaterElements(vector& nums) { int n = nums.size(); int maxIndex = 0; for (int i = 1; i < n; i++) // ADDITIONAL O(n) if (nums[i] > nums[maxIndex]) maxIndex = i; stack st; vector nge(n); for (int i = maxIndex; i > maxIndex - n; i--) { int j = (n + i) % n; while (!st.empty() && st.top()
@closer9689
@closer9689 3 ай бұрын
CODE => class Solution { public: //Better Approach :-> without making extra circular array vector nextGreaterElements(vector& nums) { int n = nums.size(); stack st; for(int i = n-2 ; i >= 0; --i) { st.push(nums[i]); } vector result; for(int i = n-1 ; i>= 0 ; --i) { int curr = nums[i]; while ( !st.empty() && st.top()
@priyapathak9716
@priyapathak9716 4 ай бұрын
Implement Queue using Stacks put this one also! thnku
@tusharsingh1257
@tusharsingh1257 4 ай бұрын
Completed 19th July
@SibiRanganathL
@SibiRanganathL 3 ай бұрын
Understood
@DeadPoolx1712
@DeadPoolx1712 Ай бұрын
UNDERSTOOD;
@SoulFrmTitanic
@SoulFrmTitanic 2 ай бұрын
guys jo for the first time stacks and queues kr raha h, kya tumse ye questions khud se ho paate hn ? Please batana!! kyuki mujhse literally nhi hopaate!! hn, ek aad baar meri approach jrur same hojaati h striver bhaiya jesi
@ashwani6527
@ashwani6527 2 ай бұрын
For beginners the best way is to watch and learn then understand then revise
@SoulFrmTitanic
@SoulFrmTitanic 2 ай бұрын
@@ashwani6527 ok bhaiya!!
@ashutoshyadav9881
@ashutoshyadav9881 Ай бұрын
kisi se nhi hote jab tak us type ke question na kiye ho
@oyeesharme
@oyeesharme Ай бұрын
thanks bhai
@atulwadhwa192
@atulwadhwa192 Ай бұрын
My approach: class Solution { private: void findNgeForLastEle(vector &nums,int n,stack &st,vector &res){ // int nge = -1; for(int i=n-2;i>=0;i--){ if(nums[i]>nums[n-1]) st.push(nums[i]); } if(!st.empty()) res[n-1] = st.top(); st.push(nums[n-1]); } public: vector nextGreaterElements(vector& nums) { stack st; int n = nums.size(); vector res(n,-1); findNgeForLastEle(nums,n,st,res); for(int i = n-2;i>=0;i--){ while(!st.empty() && st.top()
@agneshk1012
@agneshk1012 3 ай бұрын
class Solution { public int[] nextGreaterElements(int[] nums) { int n = nums.length; int[] nge = new int[n]; Stack stack = new Stack(); for(int i=2*n-1; i>=0; i--) { int index = i%n; while(!stack.isEmpty() && nums[index] >= stack.peek()) stack.pop(); if(stack.empty()) nge[index] = -1; else nge[index] = stack.peek(); stack.push(nums[index]); } return nge; } }
@KartikeyTT
@KartikeyTT 4 ай бұрын
tysm sir
@omkarshendge5438
@omkarshendge5438 4 ай бұрын
you forgot to reverse the ans vector by the way, like that is how i got all cases passed.
@akhilesh_ku
@akhilesh_ku 4 ай бұрын
Nah not needed 😊
@ashu_10011
@ashu_10011 4 ай бұрын
that is needed only when you are using push_back or emplace_back functions to add elements in the answer vector
@adilahmed6730
@adilahmed6730 3 ай бұрын
@@ashu_10011 what's the alternate method to add to the vector array?
@ryanv7535
@ryanv7535 3 ай бұрын
Isn't the space complexity O(n)? Say the stack contains some element a, after which there are some elements and then a is pushed into stack again. When that occurs all elements from top to a will be popped. So there can never be more than n elements in the stack, is what I think. Please correct me if I'm making a mistake.
@Gurunat16
@Gurunat16 3 ай бұрын
Same thoughts!
@AradhyaVerma-p3m
@AradhyaVerma-p3m 15 сағат бұрын
BRUTEFORCE: ***JAVA*** class Solution { public int findGreater(int index,int value,int []nums){ for(int i=index;i
@barathkumarg9197
@barathkumarg9197 2 ай бұрын
public static void findNextGreater(int[] inputArray, int[] output){ Stack stack = new Stack(); //Iterate the input Array for (int index=inputArray.length -1 ;index>=0;index--){ //pop the highest elements while(!stack.isEmpty() && inputArray[index] > stack.peek()) stack.pop(); //stack empty case if (stack.isEmpty()) { stack.push(inputArray[index]); output[index] = -1; } // else we found the next greater element just push to stack and output array else{ output[index] = stack.peek(); stack.push(inputArray[index]); } } } i think these one worked for me, which is simple, no need of double iteration, if i am wrong please correct me, Thanks !!!
@vinit_notfound
@vinit_notfound 4 ай бұрын
❤❤❤❤
@amankumarsingh3995
@amankumarsingh3995 4 ай бұрын
@abhaykumarsingh3884
@abhaykumarsingh3884 3 ай бұрын
Steps 1. Just put all element from end in stack first. 2. Now perform same operations as you have performed in Next-Greater Element-I You don't need to think about hypothical array
@adilahmed6730
@adilahmed6730 3 ай бұрын
I also thought of the same method
@Ekam873
@Ekam873 3 ай бұрын
great method
@chiragmaheshwari6761
@chiragmaheshwari6761 2 ай бұрын
what is thought process behind it intiutiton can u please explain me brother
@shikher4559
@shikher4559 2 ай бұрын
great observation!
@shreyxnsh.14
@shreyxnsh.14 4 ай бұрын
C++ Code: class Solution { public: vector nextGreaterElements(vector& nums) { stack st; int n = nums.size(); vector ans(n, -1); for(int i=2*n-1;i>=0;--i){ while(!st.empty() && st.top()
@omkarshendge5438
@omkarshendge5438 4 ай бұрын
you need to reverse the ans array too
@esco0p210
@esco0p210 3 ай бұрын
@@omkarshendge5438 take vector ans (n,-1) it will be reversed
@skasrafali8707
@skasrafali8707 3 ай бұрын
@@omkarshendge5438 yes you are right
@pruthvinarayana9568
@pruthvinarayana9568 3 ай бұрын
⭐⭐Solution in Python: Can Also be Sovled Like This: class Solution: def nextGreaterElements(self, nums: List[int]) -> List[int]: stack = [] n = len(nums) res = [-1] * n for i in range(2*n): index = i%n # Here the Cur is the Index , NOT the current Value. while stack and nums[index] > nums[stack[-1]]: res[stack[-1]] = nums[index] stack.pop() stack.append(index) return res
@IshraqTanvir
@IshraqTanvir 2 ай бұрын
his explanaition is too well.........................................................................but, it would be better if he don't write pseudocode and write real code
@sohaildarwajkar9979
@sohaildarwajkar9979 2 ай бұрын
Then u would complain about the language in which he is writing the code..Grow Up man!!
@IshraqTanvir
@IshraqTanvir 2 ай бұрын
@@sohaildarwajkar9979 actually I won't ....... ...... cause most of the cpp mans whether like java or c++.......both the language is much closer syntaxically......
@talkswithprabh5374
@talkswithprabh5374 28 күн бұрын
If you know the logic and pseudo code, its too easy to write code. Its all about syntax then.
@aryankumar3018
@aryankumar3018 3 ай бұрын
Understood
@CS090Srikanth
@CS090Srikanth Ай бұрын
@rutujashelke4208
@rutujashelke4208 2 ай бұрын
Understood
L7. Previous Smaller Element | Stack and Queue Playlist
8:11
take U forward
Рет қаралды 19 М.
L8. Trapping Rainwater | 2 Approaches | Stack and Queue Playlist
28:58
The Ultimate Sausage Prank! Watch Their Reactions 😂🌭 #Unexpected
00:17
La La Life Shorts
Рет қаралды 8 МЛН
Увеличили моцареллу для @Lorenzo.bagnati
00:48
Кушать Хочу
Рет қаралды 8 МЛН
How Much Tape To Stop A Lamborghini?
00:15
MrBeast
Рет қаралды 210 МЛН
L12. Largest Rectangle in Histogram | Stack and Queue Playlist
31:42
take U forward
Рет қаралды 43 М.
L5. Next Greater Element | Stack and Queue Playlist
18:25
take U forward
Рет қаралды 62 М.
L11. Aestroid Collisions | Stack and Queue Playlist
17:28
take U forward
Рет қаралды 26 М.
Best Books for Learning Data Structures and Algorithms
14:01
Engineering with Utsav
Рет қаралды 374 М.
Transformers (how LLMs work) explained visually | DL5
27:14
3Blue1Brown
Рет қаралды 3,7 МЛН
Next Greater Element I - Leetcode 496 - Python
14:53
NeetCode
Рет қаралды 79 М.
Next Permutation - Intuition in Detail 🔥 | Brute to Optimal
28:15
take U forward
Рет қаралды 456 М.
The Ultimate Sausage Prank! Watch Their Reactions 😂🌭 #Unexpected
00:17
La La Life Shorts
Рет қаралды 8 МЛН