Notes/Codes/Problem links under step 10 of A2Z DSA Course: takeuforward.o... Entire playlist: • Two Pointer and Slidin... Follow us on our other social media handles: linktr.ee/take...
Пікірлер: 117
@Gottastudyhard-m3b8 ай бұрын
Implementing it yourself makes it much more clearer.
@4444-c4s8 ай бұрын
East or West, Striver bhaiya sabse Best KZbin pe esa koi bhi nahi hoga jo job ke saath saath itna content banata ho aur apni company bhi chalata ho...🙏🙏🙏
@Coder_Buzz077 ай бұрын
codewithmik bhi hai bro
@Amanh7296 ай бұрын
@@Coder_Buzz07 yup
@adarshnegi89062 ай бұрын
This was a great problem, i hope one day i can come up with such approach all by myself. For those who might of two pointers i at 0 and j at n-1 and compare instances , this method will fail on TC such as [11,49,100,20,86,29,72], because at first it looks 72 should be chosen but all the elements after 11 are large and they will compensate and produce maximum score
@sruthimajhi561019 күн бұрын
Thank you... I was dying to understand the problem statement. Now this example makes it easier why a sliding window approach should be used and not the two pointer approach.
@ritik_deswal7723 күн бұрын
my approach using while loop in java - int[] ar= {6,2,3,4,7,2,1,7,1}; int k=4; int sum=0; for(int i=0;iar.length-k-1) { sum+=ar[l]; sum-=ar[r]; maxx=Math.max(maxx,sum); l--;r--; } System.out.println(maxx);
@mayanksaurabhmayanksaurabh92716 ай бұрын
thanks for so easy and intuitive solution. Lot of solutions for this problem are problem which have made it look really complex
@unknown26985 ай бұрын
public static int maxScore(int[] cardPoints, int k) { int lsum =0, rsum =0, max =0,sum =0; int n = cardPoints.length; for(int i=0;imax){ max = sum; } } return max; } same approach but easier to understand
@VarshaSingh-hi2sb2 ай бұрын
In this case with above solution in video we can't take 7 i.e 7,2,1,7 which will result in more sum . or is it important to take the last card ?
@aakanshavishwakarma82356 ай бұрын
another approach? we can take a consecutive window of size (n-k) and find the minimum sum window , that yields us the maximum sum of the remaining 4 elements from the first or last
@akshaysharmaBSG4 ай бұрын
Yes...that also makes sense...but what will be time complexity for getting min sum of n-k array size ?
@AryanGupta-20244 ай бұрын
@@akshaysharmaBSG O(N) time and O(1) space
@sjain63203 ай бұрын
@@AryanGupta-2024 yeah i did this but ig his solution is better as it is O(2k)
@time-barbaad3 ай бұрын
@@sjain6320 the above said solution would be better in the cases where k > n/2
@109_debjitacharjee97 ай бұрын
u are the best bhaiya🤩 eagerly waiting for your string playlist
@KashishIsOn7867 ай бұрын
Thank you @striver , for making DSA Easy for us . Hatts of to you .
@rushidesai28363 ай бұрын
Classic problem.. thanks Striver!
@parth_38568 ай бұрын
OTHER CREATORS! be like "BHAI SAANS THO LENE DE......".
@stith_pragya6 ай бұрын
Understood...........Thank You So Much for this wonderful video..........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@someThingisFishy54 ай бұрын
One more approach: As the qsn asking us to pickup the maximum points , and the points can be pickup either front or back side, (which leaves the least sum of points in the array) so we can find the minimum sum ,with window size n-k and subtract the result from total sum of the array ,we can use sliding window to solve this Time Complexity is O(N) Space Complexity is O(1)
@IstiakGametube8 ай бұрын
I have been following your a2z DSA course. I want to do strings but there is no videos and problems in your sheet. Please make videos on them and upload the problems
@mrinceptionist70387 ай бұрын
bro what are you talking about.....the a2z dsa sheet has 2 dedicated section for strings....step-5 and step-18, which covers all basics,medium and hard string questions !!!
@IstiakGametube7 ай бұрын
@@mrinceptionist7038 He has questions but there is no solve videos for them
@bhaiinnaa65354 ай бұрын
You can take n-k as windowlength , totalsum=sum(arr) windowlength=n-k currwindowsum=sum(arr[:windowlength) maxwin=curwin , for l in range(windowlen,n): curwin +=arr[l]-arr[l-windowlen] netsum=total-curwin maxwin=max(maxwin,netsum)
@torishi826 ай бұрын
Understood bhai. Thank you.
@subhasishdas30118 ай бұрын
One more approach is finding min_sum of all windows of size array_length - k , array_total_sum - min_sum will be the ans.
@hashcodez7573 ай бұрын
"UNDERSTOOD BHAIYA!!"
@bharath33877 ай бұрын
Do we need seperate variables for right and left sum, can we not just maintain a single variable and 2 pointers and remove left pointer value and increase right bponter value
@ShauryaPundir8 ай бұрын
thanks vvvvv much sir,i really wanted a playlist like this
@jivanmainali17423 ай бұрын
With modulo , its much easier class Solution { public: int maxScore(vector& cardPoints, int k) { int n = cardPoints.size(); int left = n-k; int right = n-k; int ans = 0; int sum = 0; while (left < n) { if ((right - left + 1)
@lavanyaan21587 ай бұрын
Thank you so much for the video bro.
@ishanaggarwal72655 ай бұрын
Hi striver, I knew a better solution that solves in single pass.
@salehaafreen43093 ай бұрын
share it please
@tlasyashree75902 ай бұрын
Super easily understood
@sandeeppp90405 ай бұрын
class Solution { public int maxScore(int[] cardPoints, int k) { int lsum=0,rsum=0,maxSum=0; for(int i=0;i=0;i--){ lsum-=cardPoints[i]; rsum+=cardPoints[rindex]; rindex--; maxSum=Math.max(maxSum,(lsum+rsum)); } return maxSum; } } i was here and anyone can have this java code !!!! and also initial loop will go to end k because of correct calculation of lsum
@Codingforugeek8 ай бұрын
class Solution { public: int maxScore(vector& nums, int k) { int leftSum=0,rightSum=0,maxSum=0; for(int i=0;i=0;i--){ leftSum-=nums[i]; rightSum+=nums[rightIndex]; rightIndex--; maxSum=max(maxSum,leftSum+rightSum); } return maxSum; } }; here's the working code..... 😌
@hareshnayak73027 ай бұрын
Thanks striver for this amazing video.
@ted_mosby3 ай бұрын
feels a little happy to solve this on my own
@LinhHoang-ml1qo6 ай бұрын
understood!Thank you Striver
@raghavmanish245 ай бұрын
hey striver ... i'm the one of those follower who always give time for like and comment whenever i watch your videos.....thanku again
@shivanshchaturvedi260113 күн бұрын
More of a two pointer approach rather than sliding window....as sliding window format is generally Diffrent.
@8daudio6728 ай бұрын
class Solution { public int maxScore(int[] nums, int k) { //int left=0,right=0,maxi=0,sum=0; int n=nums.length,leftsum=0,rightsum=0,maxi=0; for(int i=0;i=0;i--){ leftsum-=nums[i];//contract //if(j>n-k-1) rightsum+=nums[j];//expand j--; maxi=Math.max(maxi,leftsum+rightsum); } return maxi; } } whats wong with it
@kisnagoyal96947 ай бұрын
I think you are ignoring value of leftsum from (idx = 0 to idx=k-1) in maxi... So it doesn't take value of leftsum for first kth elements. So after the first loop try maxi = leftsum before going for second loop in which you are decreasing value of leftsum....try it...may help..
@sarangkumarsingh79016 ай бұрын
Wow......nice approach......
@ganeshjaggineni40975 ай бұрын
NICE SUPER EXCELLENT MOTIVATED
@iamnottech89184 ай бұрын
Mja AAGeYa!!
@AmanPandey-bd1sj5 ай бұрын
thanks you bhaiya, Understood😊 import java.util.*; public class main{ public static void main(String args[]){ int a[] = {6, 2, 3, 4, 7, 2, 1, 7, 1}; int k = 4; System.out.println("MAX SUM IS: "+ findMaxPoints(a, k)); } public static int findMaxPoints(int a[], int k){ int lsum = 0; int rsum = 0; int maxsum = 0; for(int i=0;i
@mr_weird36808 ай бұрын
Thanks Brother❤
@aditya_raj78274 ай бұрын
Understood 😊😊
@oyeesharme3 ай бұрын
understood bhaiya
@kshitijraj13208 ай бұрын
great video 😇
@vaibhavmurarka51798 ай бұрын
my approach is similar to urs what i did is take k last elements followed by k first then i took sum of last k and then kept removing the front and adding the latest element in the sum and took max of these steps: int n=arr.size(); int ans=0; int sum=0; int ret=0; for(int i=n-k;i
@jayateerthag.h53722 ай бұрын
Thankyou
@dipanshuraj7868Ай бұрын
can anyone guide me why the two pointer approach is not working here that I am place i in the 0 and the J = n-1;
@shreyxnsh.14Ай бұрын
this method will fail on TC such as [11,49,100,20,86,29,72], because at first it looks 72 should be chosen but all the elements after 11 are large and they will compensate and produce maximum score copied from another comment
@naveenau1435 ай бұрын
Understood ❤
@subee1288 ай бұрын
Thank you very much
@Pushpraj-sf1nz7 ай бұрын
it was helpful
@sandeepgmore14835 ай бұрын
@striver where can i get the source code solution for content
@MuralidharanSrec2 ай бұрын
here that you have included all the elements as 4 size but the index 4 element 7 is not at all included if its included the output will be 17 am i correct
@codeman38287 ай бұрын
Understood. Thanks
@ok-jg9jb8 ай бұрын
Thanks❤
@prasannasahoo08066 ай бұрын
what about the elements in the middle ? how do we reach them ?
@mihiradarsh76046 ай бұрын
You are only allowed to take
@vamsilanka56394 ай бұрын
optimal solution in another way ------------------------------------------------------ public int maxScore(int[] arr, int k) { int n = arr.length; int i = 1, j = 1; int sum = 0,maxsum = -1; int end = 2 * k; /// to consider only first k and last k elements while (j k) { sum -= arr[(n + k - i) % n]; i++; } if ((j - i) + 1 == k) maxsum = Math.max(sum, maxsum); j++; } return maxsum; } ----------------------------------------
@ShahNawaz-nk3po6 ай бұрын
Another approach with is exactly same as one of the very standard Sliding window question. class Solution { public: int maxScore(vector& cardPoints, int k) { // we need to find substring of size (n-k) and minimum sum // final answer = is total sum of length n - minimum sum of substring of length (n-k) // = maximum sum of length k taken from extreme left/right int n = cardPoints.size(); int l = 0; int r = 0; int ans = INT_MAX; int sum = 0; int val = 0; for(auto it:cardPoints) val+=it; while(r(n-k)){ sum-=cardPoints[l]; l++; } if(r-l+1==(n-k)) ans = min(ans, sum); r++; } return val-ans; } };
@jivanmainali17423 ай бұрын
Where is it mentoned to keep consecutive number
@adityapandey234 ай бұрын
Understood
@kuldeeprawat-zp7od8 ай бұрын
Hello everyone, another approach we can think of is We can take sum of all the elements and as according to example we want sum of 4 maximum elements with given conditions and the size of array is 9 so actually we can calculate the sum of 5 consecutive elements which is minimum among all and then we can subtract it from the total sum of all the elements of the array
@sanukyadav6 ай бұрын
Understood, implementing with pseudocode is not able to pass leetcode test cases! did i miss something! def (nums, k): lsum = 0 maxsum = 0 n = len(nums) for i in range(k-1): lsum = lsum + nums[i] maxsum = lsum r_idx = n-1 maxsum = 0 rsum = 0 for i in range(k-1, -1, -1): lsum = lsum - nums[i] rsum = rsum + nums[r_idx-i] r_idx = r_idx - 1 maxsum = max(maxsum, lsum+rsum) return maxsum
@vatsalpoddar66605 ай бұрын
int maxScore(vector& cardPoints, int k) { int n = cardPoints.size(); int left = k-1; int right = n-1; int maxSum = INT_MIN; int sum = 0; for(int i = 0; i < k; i++){ sum += cardPoints[i]; } maxSum = max(maxSum, sum); while(left >= 0){ sum = sum - cardPoints[left]; sum = sum + cardPoints[right]; maxSum = max(maxSum, sum); left--; right--; } return maxSum; }
@Josuke2174 ай бұрын
You set maxsum to 0 and r_idx-i is wrong
@Prakash-jh7hpАй бұрын
same approach but implemented in a simpler way class Solution { private static int sumupto(int k , int[]arr){ int res=0; for(int i =0;i
@rishabsharma53075 ай бұрын
Started from the end and circularly rotated sliding window ``` int maxScore(vector& cardPoints, int k) { int i, j, maxSum, sum, n = cardPoints.size(); bool flag = false; i = j = n - k; maxSum = sum = 0; while(true) { sum += cardPoints[j]; if(j-i+1 == k || flag) { flag = true; maxSum = max(maxSum, sum); if(i == 0) break; sum -= cardPoints[i]; i = (i + 1) % n; } j = (j + 1) % n; } return maxSum; } ```
@shototodoroki47198 ай бұрын
understood
@karthik-varma-15792 ай бұрын
class Solution { public int maxScore(int[] cardPoints, int k) { long start = System.nanoTime(); int maxy = 0; int lsum = 0; int rsum = 0; for(int i=0;i=0;j--){ rsum = rsum + cardPoints[rightIndex]; rightIndex--; lsum = lsum - cardPoints[j]; maxy = Math.max(maxy,lsum+rsum); } long end = System.nanoTime(); System.out.println(end-start); return maxy; } }
@ManishKumar-dk8hl8 ай бұрын
JAVA BOLNE WALO K LIYE : -- class Solution { public int maxScore(int[] arr, int k) { int sum=0; for(int i=0;i
@thoughtsofkrishna89635 ай бұрын
We want Strings playlist Striver
@siddiqabr7110Ай бұрын
I thought of this approach at the very beginning and then thought of how to optimise this for an hour then came here to see the optimised approach but 😂😂😂😂😂😂 after coming here i realised I just wasted an hour
@THAKURPRAJWALSINGH-o7o6 ай бұрын
class Solution { public: int maxScore(vector& nums, int k) { int lsum=0; int rsum = 0; int maxSum = 0; int n = nums.size(); for(int i=0;i=0;i--){ lsum=lsum-nums[i]; rsum=rsum+nums[rindex]; rindex=rindex-1; maxSum= max(maxSum,lsum+rsum); } return maxSum; } };this code not passing testcases in leetcode
@ManishLakkavatri6 ай бұрын
the condition in the first loop will be i < k or i
@ShobhitVerma-j3f2 ай бұрын
i think everyone is providing solution when N=2k+1, what if k is lesser than that??
@paulbarsha17404 ай бұрын
Why 2*k and not 2+k? Isn't 2 separate loop takes adding and nested takes multiplication?
@sohaildarwajkar99792 ай бұрын
Bhai tu first year se wapas repeat kr
@aryankumar30183 ай бұрын
US
@angeldeveloper8 ай бұрын
🙌🏻
@theskyraturi2 ай бұрын
hil bhi ni rhe ye questions mujhse
@jitghosh39238 ай бұрын
🙌
@StudyYuv4 ай бұрын
😀😀
@DeorajMaharaj8 ай бұрын
bhaiya aap thora sick ya kaafi stressed lg rhe ho. Wo phle jaisa energy kahi na kahi missing laga.
@manasandmohit8 ай бұрын
Are bhaiya itni fast fast
@adityaroychowdhury37098 ай бұрын
Subah uthe, aapke darshan hogye. Ab saare contest badia jayenge, sare hard question solve hone lag jayenge 😂😂
@dhruvmishra97818 ай бұрын
bro konse year mein ho??
@saketjaiswalSJ8 ай бұрын
class Solution { public: int maxScore(vector& a, int k) { int n=a.size(); int s1=0; int s2=0; int i=0; int j=n-k; while(j k. tk loop chala k times o(k) { s2=s2+a[j]; j++; } int maxi = s2; j=n-k; while(i