Тёмный

L9. Binary Subarrays With Sum | 2 Pointers and Sliding Window Playlist 

take U forward
Подписаться 681 тыс.
Просмотров 77 тыс.
50% 1

Опубликовано:

 

29 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 99   
@Asmir-p1z
@Asmir-p1z 6 месяцев назад
It becomes hard problem when we try to solve using sliding window but how easily Striver was able to explain it is just Awesome and much appreciated❤❤❤
@Demon01Editz
@Demon01Editz 3 месяца назад
Code : class Solution { public: int lessequaltok(vector& nums,int goal){ if(goal < 0) return 0; int l = 0; int r = 0; int ans = 0; int n = nums.size(); int sum = 0; while(r < n){ sum += nums[r]; while(sum > goal){ sum -= nums[l]; l++; } ans += (r-l+1); r++; } return ans; } int numSubarraysWithSum(vector& nums, int goal) { return lessequaltok(nums,goal)-lessequaltok(nums,goal-1); } };
@SuvradipDasPhotographyOfficial
@SuvradipDasPhotographyOfficial 3 месяца назад
This is an Excellent Question, truly amazing tutorial striver. Kudos to you bro. Striver only heap and stack queues are left, hoping to get those series soon. Take care of your health bro. The entire DSA community will forever be indebted to you.
@karthik-varma-1579
@karthik-varma-1579 3 дня назад
Great
@LogicArena01
@LogicArena01 3 месяца назад
Amazing ❤ love your teaching style and love how you teach us how to think from the scratch ❤
@shikharchoudhary7639
@shikharchoudhary7639 24 дня назад
Thanks striver the solution is cleared.
@kingkohli7175
@kingkohli7175 Месяц назад
INSANE BROTHER♥♥
@atg878
@atg878 3 месяца назад
thanks a lot ❤❤
@abhaykumarsingh3884
@abhaykumarsingh3884 Месяц назад
Optimal wala to bahut hi jada intuitive hai.. kab pata chalega ki aise bhi solve kar skte hai??
@rishabsharma5307
@rishabsharma5307 2 месяца назад
Solution using the same method as L7 TC: O(2*n) SC: O(n) in worst case ``` int numSubarraysWithSum(vector& nums, int goal) { int i, j, sum, count, n = nums.size(); queue mq; i = j = sum = count = 0; int k = goal > 0 ? 1 : 0; while(j < n) { sum += nums[j]; if(nums[j] == k) mq.push(j); while(sum > goal) { sum -= nums[i]; if(nums[i] == 1) mq.pop(); ++i; } if(sum == goal) { if(goal > 0) count += mq.front() - i + 1; else count += j-i+1; } ++j; } return count; } ```
@subhadrosamaddar6336
@subhadrosamaddar6336 3 месяца назад
incredible
@HimanshuGupta-yv4lf
@HimanshuGupta-yv4lf 3 месяца назад
Thanks for the tutorial but, this gives result for
@CoderGrow1
@CoderGrow1 Месяц назад
add the code bro pls and artical also pls
@dayashankarlakhotia4943
@dayashankarlakhotia4943 6 месяцев назад
public int numSubarraysWithSum(int[]nums,int goal){ int prefixZero=0,sum=0,ans=0,i=0,j=0; while(j
@alisheheryar1770
@alisheheryar1770 3 месяца назад
I am watching and I understand the code. But I can't give you a like on Instagram. Instagram use hi nahien krta apka bhai.
@rushidesai2836
@rushidesai2836 Месяц назад
Never in my dreams would have thought of such an ingenious solution. Wow.
@AkhileshPadiyar
@AkhileshPadiyar Месяц назад
The most optimal solution is a very great concept and will help you solve many problems in sliding window, even the hard ones......
@yashhokte1020
@yashhokte1020 17 дней назад
I am unable to understand why fun(nums,goal) - fun(nums,goal-1) works here? What's the math here? I am unable to understand this basic maths behind it, please can anyone explain me the maths behind this?
@SANDEEPDHAVALA
@SANDEEPDHAVALA 6 дней назад
please watch A - B in this video ( ru-vid.com3uaVqX5qClg?si=c2yO4X4gQwXrqm3u ) continue reading after watching the video. draw the venn diagram of A-B on paper and refer to it while reading this comment for better understanding. lets assume you need people who have 2 rupees that is ( fun(nums,goal) here we are finding people who
@amansingh-hb9ko
@amansingh-hb9ko 5 месяцев назад
just a small correction in first while condition r should less only size not equal to while(r
@Funzee
@Funzee 3 месяца назад
do u know where is the article of this code
@moonlight-td8ed
@moonlight-td8ed 3 месяца назад
@@Funzee there isnt one i guess
@PiyushKumar-xe1ng
@PiyushKumar-xe1ng 19 дней назад
whose brain could have thought like that 🤯
@SibiRanganathL
@SibiRanganathL Месяц назад
Understood: Big brain time
@anujvijaypatilb22ee010
@anujvijaypatilb22ee010 3 месяца назад
class Solution { public: int count(vector& nums, int goal) { int left = 0; int right = 0; int sum = 0; int count = 0; // if() while (right < nums.size()) { sum += nums[right]; while (sum > goal && left
@aravindvinjamuri1873
@aravindvinjamuri1873 Месяц назад
i can stop the video only after listening to that music at the end😁😁
@ManishKumar-dk8hl
@ManishKumar-dk8hl 5 месяцев назад
class Solution { public int helpMe(int[] nums,int goal){ int l=0; int r=0; int sum=0; int cnt=0; if(goal
@chakrabarti9634
@chakrabarti9634 5 месяцев назад
Why goal - goal-1 please help😊
@Rahul_Mongia
@Rahul_Mongia 3 месяца назад
@@chakrabarti9634 Dekh bhai example se samjthe hai let goal=2 Calculate helpMe(nums, goal) This function will count all subarrays with sums less than or equal to 2. Subarrays with sum 0: [] Subarrays with sum 1: [1], [0], [1], [0], [1], [1,0], [0,1], [1], [1,0] Subarrays with sum 2: [1,0,1], [0,1,0], [1,0,1], [1,0], [0,1,0,1], [1,0,1], [1,0,1] Calculate helpMe(nums, goal - 1) This function will count all subarrays with sums less than or equal to 1. Subarrays with sum 0: [] Subarrays with sum 1: [1], [0], [1], [0], [1], [1,0], [0,1], [1], [1,0] Find the Exact Count The number of subarrays with sum exactly 2 is helpMe(nums, 2) - helpMe(nums, 1). Aya samjh....
@AyushEditz-hs6pf
@AyushEditz-hs6pf 22 дня назад
this video is a little confusing. Watch this again after some time and trust me you will understand much better.
@huungryyyy
@huungryyyy 3 месяца назад
Here is the solution class Solution { public: int Calculate(vector& nums, int target) { int front=0; int end=0; int count=0; int sum =0; if(target
@naturesrevolution
@naturesrevolution Месяц назад
how it will run for two times ? I can't get it ☹
@himage6540
@himage6540 15 дней назад
because you'll call it two times
@mayurbhat9479
@mayurbhat9479 3 месяца назад
Understood. While solving this with the sliding window, I got the wrong answer and wondered why. Thanks for the explanation.
@abirsaha297
@abirsaha297 3 месяца назад
the solution is amazing ...opened up my mind..superb explanation but i wonder striver did it so easily when will i be able to build such intuition ... i got great confidence throughout the playlist but the way sir brought up the solution amazed me but also gave lot of questions as to when will i be able to think like this
@jritzeku
@jritzeku 2 месяца назад
Honestly for subarray sum problems having negative values or 0s , prefixSum is the way to go. It's slightly less performant but more intuitive. I tried learning the optmized approach several times but its too clever and unlikely to come up with during interview given that we have so many other data structures, algs patterns to worry about already lol. Problems w/ prefixSum: subarray sum equals k, binary sum equals k , nice subarrays(SAME logic as binary sum w/ slight change).
@PratapSingh-yg8tc
@PratapSingh-yg8tc 4 месяца назад
It becomes hard problem when we try to solve using sliding window but for you everything is so easy ,how we can think like you
@harshdhochak8361
@harshdhochak8361 3 месяца назад
here is the c++ code; class Solution { public: // it will calculate for
@aayushgakhar3525
@aayushgakhar3525 2 месяца назад
i tried this approach on number of distinct char in string ==k and it passes only 433/1050 test case then gives tle
@SaurabhKumar-tq8zn
@SaurabhKumar-tq8zn 3 месяца назад
why you added r-l+1 , why not +1
@evilgame6197
@evilgame6197 4 месяца назад
in my entire lifetime I will never be able to come to this solution by my own
@jritzeku
@jritzeku 3 месяца назад
And thats completely fine. Consider them as like Mathematical formulas. Recall that without having learned formulas, it would be nearly impossible to solve even simple math problems. Unfortunately these patterns are not covered in traditional CS curriculums where we just learn data structures, and common algorithms like traversals ,insertions ,deletions. Also another common pattern/strategy is to use the prefixSum solution. You shouldn't feel like you have to come up with these patterns on your own...just like math formulas lol.
@devanshsingh2
@devanshsingh2 2 месяца назад
@@jritzeku Thanks for the motivation dude 🥲😊
@purushottam108
@purushottam108 3 месяца назад
class Solution { public: int fun(vector& arr, int goal){ if(goal < 0 ) return 0; int l = 0, r = 0 , cnt = 0; int sum = 0; while(r < arr.size()){ sum += arr[r]; while(sum > goal){ sum -= arr[l]; l++; } cnt += r - l + 1; r++; } return cnt; } int numSubarraysWithSum(vector& nums, int goal) { return fun(nums,goal) - fun(nums,goal - 1); } };
@shrutiagarwal-ux1qz
@shrutiagarwal-ux1qz 4 месяца назад
how did you get the intution of using this approach
@sandipanadhikary5546
@sandipanadhikary5546 2 месяца назад
Damn this was really something 🔥🔥🔥 the day i start thinking like striver cracking google ll be a piece of cake😅
@--Sreekarsai
@--Sreekarsai 5 месяцев назад
Why there is no code
@RohitKumar-hn6wj
@RohitKumar-hn6wj 6 месяцев назад
best series on sliding windows. thanks a lot.
@MJBZG
@MJBZG Месяц назад
understood
@SANSKARSAHU-j3n
@SANSKARSAHU-j3n Месяц назад
Why are we calling it for 2 time ?
@divyanshsingh6668
@divyanshsingh6668 3 месяца назад
class Solution { public: int ans(vector& nums, int goal){ if (goal
@yaxprajapati115
@yaxprajapati115 3 месяца назад
How will we identify if the question is of this type ? or normal sliding window?
@KartikeyTT
@KartikeyTT 3 месяца назад
this type -> we have to count the no of subarrays normal sliding windows -> we have to find longest length subarray watch video 1 of the playlist and refer type 2 and type 3 problems in the vid
@shashankvashishtha4454
@shashankvashishtha4454 2 месяца назад
understood
@siddhantksingh2514
@siddhantksingh2514 3 месяца назад
r less than n not r less than equal to
@vidhiagarwal9370
@vidhiagarwal9370 2 месяца назад
why did we not solve using prefixSum then?
@tusharyadav5874
@tusharyadav5874 Месяц назад
It can be solved but we want to reduce the space complexity from O(N) which was used in the prefix sum to O(1) .
@ashimaanand992
@ashimaanand992 5 месяцев назад
Shouldn't the complexity be O(n^2) and not O(2*n)
@shashanknakashe3339
@shashanknakashe3339 3 месяца назад
this is the solution that raj bhaiya told us do at last goal-goal-1; class Solution { public: int numSubarraysWithSum(vector& nums, int goal) { int l=0; int r= 0; int count =0; int sum = 0 ; while(r < nums.size()){ sum = sum+ nums[r]; while(sum>goal){ sum = sum -nums[l]; l++; } if(sum
@huungryyyy
@huungryyyy 3 месяца назад
thanku striver bhaiya🙂🙂
@hashcodez757
@hashcodez757 Месяц назад
#BHAIYA
@Zomb-zj4ip
@Zomb-zj4ip 3 месяца назад
understood, thank you
@oyeesharme
@oyeesharme Месяц назад
thanks bhaiya
@shubhtandon8315
@shubhtandon8315 2 месяца назад
Just Wowww!
@Shivi32590
@Shivi32590 2 месяца назад
understood
@techyguyaditya
@techyguyaditya 5 месяцев назад
At 16:15 I am getting problem here. Why are we considering all the count of r-l+1 when we only get 1 count instead of 4 in the case of 1001? The same problem got reflected in leetcode too, getting wrong answer in test cases. Solution: watch lecture 11 to understand in detail. The code is correct if goal is
@himage6540
@himage6540 15 дней назад
u should've watched the video till the last
@rethickpavan4264
@rethickpavan4264 2 месяца назад
Brilliant 🤯
@ashishpradhan6250
@ashishpradhan6250 2 месяца назад
superb
@thaman701
@thaman701 6 месяцев назад
Striver be like ----goli ki speed se videos upload kr dunga.😂❤
@pranavmisra5870
@pranavmisra5870 3 месяца назад
amazing
@stith_pragya
@stith_pragya 5 месяцев назад
UNDERSTOOD...Thank You So Much for this wonderful video........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@abhaysinhgaikwad
@abhaysinhgaikwad 5 месяцев назад
anyone fix this class Solution { public int numSubarraysWithSum(int[] arr, int k) { int n = arr.length, count = 0, sum = 0, r= 0, l = 0; while(r < n){ sum += arr[r]; while(sum > k){ sum -= arr[l]; l++; } if(sum == k){ count += r - l + 1; } r++; } return count; } }
@tejaswaniguttula5961
@tejaswaniguttula5961 5 месяцев назад
@abhaysinhgaikwad Hi brother, class Solution { public int func(int[] arr, int k) { int sum = 0, l = 0, r = 0, count = 0; if (k < 0) return 0; while (r < arr.length) { sum += arr[r]; while (sum > k) { sum -= arr[l]; l++; } if (sum
@Satyam-je4tb
@Satyam-je4tb Месяц назад
this is already constant space because we are only increasing the frequency not the element, element can only be 0 and 1, isn't it.
@augustinradjou3909
@augustinradjou3909 5 месяцев назад
Long time I was waiting to get these types of problems...good one...
@hareshnayak7302
@hareshnayak7302 5 месяцев назад
Understood,Thanks striver for this amazing video.
@DeveshSoni-u6s
@DeveshSoni-u6s 4 месяца назад
I never thought of a solution this way. Awesome
@satyareddy8671
@satyareddy8671 3 месяца назад
super anna super logic what is vision what a thought
@torishi82
@torishi82 4 месяца назад
Awesome bhai. Understood.
@codeman3828
@codeman3828 5 месяцев назад
Understood. Thanks!
@heetpatel6602
@heetpatel6602 6 месяцев назад
striver thanks!
@angeldeveloper
@angeldeveloper 6 месяцев назад
Thanks a ton ❤
@ajithshetty1684
@ajithshetty1684 4 месяца назад
But how to return this value in function in leetcode, wont it be recursive?
@ajithshetty1684
@ajithshetty1684 4 месяца назад
class Solution: def numSubarraysWithSum(self, nums: List[int], goal: int) -> int: def fun1(nums,goal): if goal < 0: return 0 l = 0 r = 0 sum = 0 cnt = 0 while r goal: sum = sum-nums[l] l=l+1 cnt+=r-l+1 r=r+1 return cnt return fun1(nums,goal)-fun1(nums,goal-1)
@Student-j4u
@Student-j4u 4 месяца назад
its not working for nums = [0,0,0,0,0] goal = 0
@saikumarpeddineni
@saikumarpeddineni 4 месяца назад
No it works in this case too
@Student-j4u
@Student-j4u 4 месяца назад
Yeah
@tadadadadada
@tadadadadada 4 месяца назад
import java.util.HashMap; class Solution { public int numSubarraysWithSum(int[] nums, int goal) { int sum = 0; int count = 0; HashMap prefixSums = new HashMap(); prefixSums.put(0, 1); // There's one way to have a sum of 0, by taking no elements. for (int num : nums) { sum += num; // If sum - goal has been seen before, it means there's a subarray ending at the current index // which sums to the goal. if (prefixSums.containsKey(sum - goal)) { count += prefixSums.get(sum - goal); } // Add the current sum to the map of prefix sums. prefixSums.put(sum, prefixSums.getOrDefault(sum, 0) + 1); } return count; } }
@KartikeyTT
@KartikeyTT 5 месяцев назад
it should be r
@manikanta6183
@manikanta6183 5 месяцев назад
Since the array is 0-Indexed. Indexing -> 0,1,2,3 for example nums = {6,4,3,7} nums.size() would be 4, So ultimately we would be accessing the index which is out of bounds
@KartikeyTT
@KartikeyTT 5 месяцев назад
@@manikanta6183 yeah thats what i meant
@manikanta6183
@manikanta6183 5 месяцев назад
​@@KartikeyTTMy bad, I thought you were asking the question 😂
@KartikeyTT
@KartikeyTT 5 месяцев назад
@@manikanta6183 haha
@tanmay07777
@tanmay07777 3 месяца назад
Why can't we use this solution for the original subarray problem without binary elements?
@sumitdas2147
@sumitdas2147 3 месяца назад
Well, I had the same doubt, I realized that in the original problem, the goal or K can be negative. This algorithm fails to handle negative sum value. Also try dry running for this case {-1, -1, 1} with k = 0, you will get the answer as zero. But the correct answer should be 1. Why this algorithm fails? It is because the overall sum b/w left & right can be less than K, but the current element pointed by right is where we are not sure of it, whether it is less than equal to K or not. And this algo add that case in the overall count. Basically, this algo fails to handle negative integers. If someone has a better explanation, please continue this thread.
@brokegod5871
@brokegod5871 2 месяца назад
You can use that. I copy pasted my exact code from that one and it worked in leetcode. The hashing solution I mean.
Далее
Count Subarray sum Equals K | Brute - Better -Optimal
24:09
КОТЯТА В ОПАСНОСТИ?#cat
00:36
Просмотров 1,1 млн
ДЕНЬ УЧИТЕЛЯ В ШКОЛЕ
01:00
Просмотров 1,2 млн
Winning Google Kickstart Round A 2020 + Facecam
17:10
Binary Subarrays with Sum - Leetcode 930 - Python
9:57
Intro to Competitive Programming
11:41
Просмотров 777 тыс.
КОТЯТА В ОПАСНОСТИ?#cat
00:36
Просмотров 1,1 млн