*carried over the corrections from previous sliding window tutorial* Initialize the msum to Integer.MIN_VALUE because all the wsum may be negative and in that case the msum will never be updated by the wsum. and in second method, *maxSum = Math.max(maxSum, windowSum); // added as a part of correction* public static int getMaxSumSubArrayOfSizeKM2(int[] A, int k) { int windowSum = 0, maxSum = Integer.MIN_VALUE; for (int i = 0; i < k; i++) { windowSum += A[i]; } *maxSum = Math.max(maxSum, windowSum); // added as a part of correction* for (int windowEndIndex = k; windowEndIndex < A.length; windowEndIndex++) { windowSum += A[windowEndIndex] - A[windowEndIndex - k]; maxSum = Math.max(maxSum, windowSum); } return maxSum; }
The two sum is such a great problem! The solution of two pointers works just fine but it will fail in leetcode if submitted because it doesnt work for negative numbers!
It is unfortunate that you have not been uploading from a few days. You have explained this concept really well. I dont remember studying this anywhere in any DSA course online or offline.
What a brautiful explanation sir, correct of pictures and respective code lines are used for the explanation which eases the process of understanding - which i haven't seen any other tutorials/ teachers on youtube doing! great!
Explanation in the video is great, I just want to point out one fact that for target = 6 the algorithm works fine. But if the target is 5 the algorithm returns the index [1,6] which can be incorrect if the question says to find minimum indices for the sum of two elements to get the target value. In that case, the indices should be [2,3]. Apart from that, the video was cool.
Great job.. Just to be more accurate, at 17:22 -> second while time complexity must be n-k, not n. So, all whole algorithm will be work in exactly O(n).
In 2 aum I always used hashmaps till date but I can see with the TC = O(N) nut the SC = O(N) too cause of the extra space uaed for HashMap. I think will try to Master the 2 pointers and Sliding Window to get TC = O(N) but here SC = O(1) no extra space. Awesome thanks. Also gonna implement same in my office project too tomorrow, where I have to search between Ids of a different table saved as JSON obj( array json encoded ) in DB field to get rid of some normalization and make it faster
Your video gives me so much knowledge as well as beauty of programming. Keep it up, Sir! By the way, May you please upload 3sum and/or 4 sum problems as soon as possible?
Here is the summary which may help. Let's learn together What is 2 pointers technique? - a technique for searching in loop using 2 indicators, especially for strings, arrays and linked lists - need to be used in sorted array / linked list Why should know it - help reduce time complexity types of two pointers: - opposite directional - equi directional
I have a question from you... In this question we have to find pair of number having sum = 6. Now the given array is a[1,2,3,3,4,5]....now I want 3 pairs as output (1,5),(2,4),(3,3)...now what should I do because in my output it is showing 1,5 only and comes out of the loop...?
hmmn in the example 2 provided at around 5:59. i dont understand why the output should be [3,4] not [2,3] since the element 3 is under index 2 and element 3 is also in index 3. am i missing something?
Thanks a lot, brother for the lovely feedback. I hope, people will love and share my content so that your comment will be no more just a comment, will become reality. 🙂
Hey Every one, If you find this tutorial helpful, please do not forget to like , comment, share and It would be great if you can leave your feedback about the tutorial, as I have put a lot of hard work to make things easy for you. Thanks ..!! 🙏🙏
Sir actualy the two sum is failing at case of [3,2,4] bcoz when we move to first pointer as start=0 and end=length-1 so sum will be 7 then we will decrement end then it will point to two( index 1) then at last result will be [0,0] instead of [1,2] can you please rectify it !!!
Currently we don't have, but planning to collate my learning at one place in a sequence. So that people can more benefits. But will take some time to create such contents. Lets see.
Hi a simple doubt from this nood In the maximum sum problem what if maximum sum occurs at first window we are not assigning the first window's sum to the maximum sum variable..please reply its confusing me ...help me out Time is 16:40
We have multiple telegram channels and groups as well, you can post anything on channel it is used only for broadcasting but you can use group to discuss anything with your fellow coder. Join our telegram group as mentioned in video description to ask your query.
Hello sir, you said in equi-direction two-pointer problem, you mentioned, one pointer moves faster than the other, but the shown example, both pointers move at same speed. Why so?
Your sliding window solution is not working correctly when the first window is the biggest sum, because you're not evaluating the maxSum after the first while loop. Try changing the first element of the input array from 1 to 10 (which for k=4 would make windowSum=16) - the function will still return 13.
We have done the correction in our sliding window tutorial code and mentioned the same in a pinned comment of that video, please follow the pinned comment and let us know if still there is any doubt.
Your algorithm will not work when the array has more than 2 numbers which is the same like 1,2,3,3,3,3,4,6 etc and we have return a list of possible solutions
@@JitendraSingh-qd7jk this one is how you can use the same method for non sorted array. For eg if target is 6 and input array is {3,2,4} if you sort it and then return indices then it will give {0,2 } which is incorrect cause answer should be {1,2}.so this technique works.
@@ravibisht3300 You're just sorting using inbuilt method what's so new lol. The sorting takes a bit time complexity too. So this method can't work with O(1) in worst case.
nicely explained.. but i found one guy who has used exact same presentation in your video ua-cam.com/video/ymKrGndnTis/v-deo.html see ..he's stealing your work
thanks for sharing.. just watch the video.. literally the presentation was exactly looks the same in his multiple videos. but glad to see that people are so much impressed with our presentation/style that they started copying that.
import java.util.*; class HelloWorld { public static void main(String[] args) { int[] arr = {1,9,-1,-2,7,3,-1,2}; // Acsending Order int k = 4; int temp = 0; int l = 0; int ans = 0; int startIndex = 0; for(int i=0;ians){ ans = temp; startIndex = l; } } } int[] result = new int[k]; for(int i=0;i
*carried over the corrections
from previous sliding window tutorial*
Initialize the msum to Integer.MIN_VALUE because all the wsum may be negative and in that case the msum will never be updated by the wsum.
and
in second method, *maxSum = Math.max(maxSum, windowSum);
// added as a part of correction*
public static int getMaxSumSubArrayOfSizeKM2(int[] A, int k) {
int windowSum = 0, maxSum = Integer.MIN_VALUE;
for (int i = 0; i < k; i++) {
windowSum += A[i];
}
*maxSum = Math.max(maxSum, windowSum);
// added as a part of correction*
for (int windowEndIndex = k; windowEndIndex < A.length; windowEndIndex++) {
windowSum += A[windowEndIndex] - A[windowEndIndex - k];
maxSum = Math.max(maxSum, windowSum);
}
return maxSum;
}
please make video on recursion please
I have one playlist for recursion you can follow this-
ua-cam.com/play/PLSIpQf0NbcCk4be21WNhPHrHMSxFndZtB.html
Thanks for the video.
You just need maxSum = windowSum;
No reason to call Math.max again.
In short, two pointer algorithms are a nice way to reduce time complexity by only iterating throughout the container once.
Thanks for the video!
Best ever explanation over this topic across youtube
This is the best eplanation I got for two pointer so far.
@17:05 windowSum += a[end++];
after this line we should add : maxSum = windowSum;
In case if first window is the maximum.
Yes I also noticed that
The two sum is such a great problem! The solution of two pointers works just fine but it will fail in leetcode if submitted because it doesnt work for negative numbers!
It is unfortunate that you have not been uploading from a few days. You have explained this concept really well. I dont remember studying this anywhere in any DSA course online or offline.
BEST explanation on youtube!
Wow, thanks!
Love your curated list of problems. Leetcode often mixes hard ones with easy ones.
Still relevant today! Clearly explained and easy to follow! Great work!
You came to my life as a bhagwan bro...I was facing so much difficulty understanding this.Thanks very mcuh keep making such videos
What a brautiful explanation sir, correct of pictures and respective code lines are used for the explanation which eases the process of understanding - which i haven't seen any other tutorials/ teachers on youtube doing! great!
Great Job Buddy... You made look the problem simple now and thx for explaining both brute force and optimal solution in a concise manner.
thank you for you nice feedback. 🙂
Well explaianed, helped a lot to understand the algorithm. Thank you so much for such tutorial.
I like your stuff. Best visualizations for sliding windows I've ever seen.
Thankyou for crisp and Clear concept.
Great video mate. Keep this type of videos coming.
Excellent tutorial with very good diagrams for the Two Pointer Technique. Kudos to you !!!
Glad it was helpful!
no words to express your content and knowledge sharing...keep going ...thank you so much
Explanation in the video is great, I just want to point out one fact that for target = 6 the algorithm works fine. But if the target is 5 the algorithm returns the index [1,6] which can be incorrect if the question says to find minimum indices for the sum of two elements to get the target value. In that case, the indices should be [2,3]. Apart from that, the video was cool.
A simple problem can turned out to be different one if we add any restriction , it will not remain same. 😀
yep,...this problem needed binary search , not 2 pointer
Great job.. Just to be more accurate, at 17:22 -> second while time complexity must be n-k, not n. So, all whole algorithm will be work in exactly O(n).
Pretty clear explanation, great job Sir
Best Explanation Ever!!!
thank you. 🙂
Hi Kanhaiya... your videos are useful for coding aspirants like us. Keep up the good work buddy 😊👏🏼
thanks, Prakash for such nice feedback.
Stay tuned for learning cool stuff.!!
In 2 aum I always used hashmaps till date but I can see with the TC = O(N) nut the SC = O(N) too cause of the extra space uaed for HashMap. I think will try to Master the 2 pointers and Sliding Window to get TC = O(N) but here SC = O(1) no extra space. Awesome thanks.
Also gonna implement same in my office project too tomorrow, where I have to search between Ids of a different table saved as JSON obj( array json encoded ) in DB field to get rid of some normalization and make it faster
great video! regarding the leet code problems you list @4:00, Move Zeroes should be categorized under equi-directional problems
Love your videos so much 😍👍👍👍👌
Can't express how these videos are helping me.
Thanks so much
Thanks a lot for your such a nice feedback.
If you find our channel helpful, please share with your friends also.
Great explanations & graphics
bro akheeeeeer..! fabulous.!
Wow, Awesome Explanation . Please cover more Array type problem.
Thank you very much. I am working on it.
If you find our channel helpful, please support us by sharing our channel.
Very well explained. Thank you.
Glad you liked it
Nice explanation with diagrams!
thank you. 🙂
If you find it useful, please do share with others.
Awesome explanation bro please make more videos
great explaination sir. thanks.
Your video gives me so much knowledge as well as beauty of programming. Keep it up, Sir!
By the way,
May you please upload 3sum and/or 4 sum problems as soon as possible?
Thank you for your nice feedback.
Here is the summary which may help. Let's learn together
What is 2 pointers technique?
- a technique for searching in loop using 2 indicators, especially for strings, arrays and linked lists
- need to be used in sorted array / linked list
Why should know it
- help reduce time complexity
types of two pointers:
- opposite directional
- equi directional
I have a question from you...
In this question we have to find pair of number having sum = 6. Now the given array is a[1,2,3,3,4,5]....now I want 3 pairs as output (1,5),(2,4),(3,3)...now what should I do because in my output it is showing 1,5 only and comes out of the loop...?
@@coding-mania remove break statement inside if condition, I think it will work.
@@ashishburnwal1839 ok thank you
genius!!
Great tutorial, thank you!
Glad it was helpful!
Hi, great tutorial. Would the two pointer method for Two Sum Problem work for unsorted arrays?
Simply amazing
Thanks a lot 😊
I started following you
Thank you. I hope you will not disappoint 🙂
Very good explanation. Hearty thankful for your beautiful contribution
Thanks a lot for such a wonderful comment.😊
If you find our channel helpful, please support us by sharing it..
sir is sliding window technique and equi pointer both same?
because the algorithm u have shown is almost same for the both
Awesome video!
thanks 🙂
thank you for your video!!!
Great video! Thanks very much :)
Glad you liked it!
Great explanation 👍. Could you please make video for leetcode 1590.
thanks for the feedback, will try.
hmmn in the example 2 provided at around 5:59. i dont understand why the output should be [3,4] not [2,3] since the element 3 is under index 2 and element 3 is also in index 3. am i missing something?
Nice video 👍🙂
Thanks 😀
Thank you sir
Such a damn shame that you are not popular yet. We all should work on making you famous on UA-cam . You deserve it
Thanks a lot, brother for the lovely feedback.
I hope, people will love and share my content so that your comment will be no more just a comment, will become reality. 🙂
@@JavaAidTutorials yes.
You're amazing
thank you :)
Hey Every one,
If you find this tutorial helpful, please do not forget to like , comment, share
and It would be great if you can leave your feedback about the tutorial, as I have put a lot of hard work to make things easy for you.
Thanks ..!!
🙏🙏
Great explanation but when we give input 0 1 2 16 2 2 3 and target 18 then we will get wrong result using two pointer recnique
Video was very helpful. Great work.
Can you give some example of slow and fast pointers in same direction?
thanks for your feedback 🙂
Will upload some more tutorial on two pointer technique in same direction soon, stay tuned.!
Sir actualy the two sum is failing at case of [3,2,4] bcoz when we move to first pointer as start=0 and end=length-1 so sum will be 7 then we will decrement end then it will point to two( index 1) then at last result will be [0,0] instead of [1,2] can you please rectify it !!!
So, if the array is sorted we can use two pointer technique else we should use sliding window technique for O(n) time complexity,right ?
It depends on the problem, but two pointer can be used when array is ordered
I think sliding window technique is a special case which allows you to find contiguous subarray satisfying a condition.
Great work
Thank you for appreciating my work.
THANK YOU SO MUCH
Welcome 😊
sir, what methodology is the best if the array is not in sorted order and if there is restriction of sorting ????
two pointer technique will be useful , when array is ordered some or the other way else it will not help you much.
Hey bro u have any course on udemy or any other platforms ..I want more stuff about ds
Currently we don't have, but planning to collate my learning at one place in a sequence. So that people can more benefits. But will take some time to create such contents.
Lets see.
@@JavaAidTutorials start as soon as possible dsa +cp related from scratch : )
Hi a simple doubt from this nood
In the maximum sum problem what if maximum sum occurs at first window we are not assigning the first window's sum to the maximum sum variable..please reply its confusing me ...help me out
Time is 16:40
thanks for pointing this out, I have added a correction in my comment and pinned it on top. i hope it will help you.
5 star rated
Thank you..😊
@JAVAAID can you enable us to ask questions on the telegram page?
We have multiple telegram channels and groups as well, you can post anything on channel it is used only for broadcasting but you can use group to discuss anything with your fellow coder. Join our telegram group as mentioned in video description to ask your query.
thnks buddy
Hello sir, you said in equi-direction two-pointer problem, you mentioned, one pointer moves faster than the other, but the shown example, both pointers move at same speed. Why so?
It means one pointer will always ahead of another pointer. But later may shift one by one.
Great
thankyou bhai
Hi, Javaaid, Two pointers algorithm goes wrong. if we pass input like these
[3,2,4] and target - 6
import java.util.Arrays;
class Solution {
public int[] twoSum(int[] nums, int target) {
int start=0;
int end=nums.length-1;
int temp[]=new int[nums.length];
for(int i=0;i
test case is not sorted. above code only runs in sorted array
class Solution
{
public int[] twoSum(int[] nums, int target)
{
int[] RArray = new int[2];
int start=0,end=nums.length-1;
while(start < end)
{
int sum=nums[start]+nums[end];
if(sum == target)
{
RArray[0]=start;
RArray[1]=end;
break;
}
else if(sum > target)
{
end--;
}
else
{
start++;
}
}
return RArray;
}
}
THIS IS TWO POINTERS OPPOSITE DIRECTIONAL APPOROACH BUT IT'S SHOWING ERROR WHEN EXECUTING?? WHY
yeah ! ..... for me also time limit is exceeding showing...
sir but two sum problem in leetcode is unsorted
Shouldn't index start from 0?!
Your sliding window solution is not working correctly when the first window is the biggest sum, because you're not evaluating the maxSum after the first while loop. Try changing the first element of the input array from 1 to 10 (which for k=4 would make windowSum=16) - the function will still return 13.
We have done the correction in our sliding window tutorial code and mentioned the same in a pinned comment of that video, please follow the pinned comment and let us know if still there is any doubt.
Start = -1 right??
I didn't quite get why you returned plus 1. Can someone explain? Thanks
Can you please mention the time as well? where you have doubt.
JAVAAID - Coding Interview Preparation I understand, index is one based 10:49
Your algorithm will not work when the array has more than 2 numbers which is the same like 1,2,3,3,3,3,4,6 etc and we have return a list of possible solutions
👍
I didn't understand subarray
This does not work for array that is not sorted.
improvise this one and it works-
import java.util.Arrays;
class Solution {
public int[] twoSum(int[] nums, int target) {
int start=0;
int end=nums.length-1;
int temp[]=new int[nums.length];
for(int i=0;i
This technique works only in sorted array. :||
yes but you can improvise this and use-
import java.util.Arrays;
class Solution {
public int[] twoSum(int[] nums, int target) {
int start=0;
int end=nums.length-1;
int temp[]=new int[nums.length];
for(int i=0;i
@@ravibisht3300 I know how to sort an array.
@@JitendraSingh-qd7jk this one is how you can use the same method for non sorted array.
For eg if target is 6 and input array is {3,2,4} if you sort it and then return indices then it will give {0,2 } which is incorrect cause answer should be {1,2}.so this technique works.
@@ravibisht3300 You're just sorting using inbuilt method what's so new lol. The sorting takes a bit time complexity too. So this method can't work with O(1) in worst case.
nicely explained.. but i found one guy who has used exact same presentation in your video ua-cam.com/video/ymKrGndnTis/v-deo.html see ..he's stealing your work
thanks for sharing.. just watch the video.. literally the presentation was exactly looks the same in his multiple videos.
but glad to see that people are so much impressed with our presentation/style that they started copying that.
import java.util.*;
class HelloWorld {
public static void main(String[] args) {
int[] arr = {1,9,-1,-2,7,3,-1,2}; // Acsending Order
int k = 4;
int temp = 0;
int l = 0;
int ans = 0;
int startIndex = 0;
for(int i=0;ians){
ans = temp;
startIndex = l;
}
}
}
int[] result = new int[k];
for(int i=0;i