Kadane's Algorithm | Maximum Subarray Sum | Finding and Printing

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ธ.ค. 2024

ความคิดเห็น • 512

  • @takeUforward
    @takeUforward  ปีที่แล้ว +31

    Please watch our new video on the same topic: th-cam.com/video/AHZpyENo7k4/w-d-xo.html

    • @whateverittakes5340
      @whateverittakes5340 4 หลายเดือนก่อน +8

      It's recursion!!!
      lol i kept on clicking the link and its the same link (not recursion but yeah a loop)

    • @hearsid
      @hearsid 3 วันที่ผ่านมา

      Delete the link

  • @lavanya_m01
    @lavanya_m01 10 หลายเดือนก่อน +276

    13:56 "Do not carry any negatives into your future" - Striver
    Even thought the context was different, it can be applied in our real life❤

  • @takeUforward
    @takeUforward  ปีที่แล้ว +138

    Let's march ahead, and create an unmatchable DSA course! ❤
    Use the problem links in the description.

    • @princejatav8456
      @princejatav8456 ปีที่แล้ว +1

      bro in case of printing we must have keep track of only last index, think of it,
      bcz if after getting maxsum and startind and endind of subarray , if we further get the sum to be negative and then we put sum=0 and startindex to that index and think if we dont get any subarray that have sum greater than previous one, then we lost our startind and endind of main subarray ,then this will give wrong answer
      so correct solution for it will be keep only track of endind, so next time when we get higher sum then only change it. and after getting maxsum we can easily get our subarray by using last ind, by going on left side of ind and rightside of ind

    • @Nainalarenukadevi9196-dh8rz
      @Nainalarenukadevi9196-dh8rz 5 หลายเดือนก่อน

      hey is it same for longest subarray sum

  • @rishabh1S
    @rishabh1S ปีที่แล้ว +116

    Always ready for Dsa ✅

  • @rpanda_old
    @rpanda_old ปีที่แล้ว +22

    weird how this explanation of kadans algo is so simple compared to other yt videos. short algo short code. superb

  • @chethanprabhu4475
    @chethanprabhu4475 ปีที่แล้ว +111

    Couple of years back, I had watched the best video on TH-cam(in terms of views) on Kadanes and still it was not very clear to me. And this video is so so better than the other video. Top level walkthrough.
    P.S: I am not comparing. Else I would have told which video was that which I watched earlier :)

  • @shubhamagarwal1434
    @shubhamagarwal1434 4 หลายเดือนก่อน +7

    #Free Education For All.. # Bhishma Pitamah of DSA...You could have earned in lacs by putting it as paid couses on udamey or any other elaerning portals, but you decided to make it free...it requires a greate sacrifice and a feeling of giving back to community, there might be very few peope in world who does this...."विद्या का दान ही सर्वोत्तम दान होता है" Hats Off to you man, Salute from 10+ yrs exp guy from BLR, India....

  • @tarunsingh4413
    @tarunsingh4413 11 หลายเดือนก่อน +11

    at 15:22 you have to add this code in for loop . if(maxi

    • @pradeepsahu5500
      @pradeepsahu5500 3 หลายเดือนก่อน +1

      yup it will not work if every element is negative so in the end max will be negative but we want 0 as answer so i did it myself (added that condition )after the for loop

  • @harigs72
    @harigs72 3 หลายเดือนก่อน +9

    I did it by myself ..😅i found the logic after 10min I started..it feels so good . I don't know this problem is hard or not

  • @manipandit18
    @manipandit18 ปีที่แล้ว +41

    Time Stamp
    0:00 - Introduction to course
    0:41 - Problem Statement
    2:13 - Brute Force Solution
    6:12 - Better Solution
    7:40 - Optimal (Kadane's Algorithm)
    13:18 - Code
    15:29 - Time Complexity
    15:40 - Follow up question
    19:37 - Outro
    There's always something new to learn from striver's videos . Thank You bhai for posting videos without any long gap!!!.

  • @vaishnaviganseh2884
    @vaishnaviganseh2884 ปีที่แล้ว +4

    BEST Kadane's algo video on the internet!

  • @HansrajSinghShekhawat-s3u
    @HansrajSinghShekhawat-s3u 4 วันที่ผ่านมา

    The build up to the optimal and follow up question is fire.

  • @arnavjain762
    @arnavjain762 10 หลายเดือนก่อน +2

    Complete concept clarity in 20 mins. Amazing ✅✅✅✅

  • @Raj10185
    @Raj10185 ปีที่แล้ว +6

    Printing the subarrays part is something i learn this time tysm understood:)

  • @bendivanitha7211
    @bendivanitha7211 ปีที่แล้ว +2

    "Understood " superb intuition of algorithm !! awsome explanation i request everyone whoever watching strivers vedeos do like and comment!!!

  • @Manishgupta200
    @Manishgupta200 ปีที่แล้ว +6

    Kadame's Algorithm is now clear. Thankyou Striver ❤
    From brute(TC -> O(N^3), SC -> O(1)) to better(TC -> O(N^2), SC -> O(1)) to Optimal(TC -> O(N), SC -> O(1))

  • @RaviKumar-sn6tu
    @RaviKumar-sn6tu 9 หลายเดือนก่อน

    in love with kadane algorithm...all thanks to you bhaiya

  • @yugamsaini8761
    @yugamsaini8761 ปีที่แล้ว +14

    Bro its 2pm night in India, You are doing great Job, consistency 💥

    • @rohitprasad5708
      @rohitprasad5708 ปีที่แล้ว +1

      He is in warsaw, which means he uploaded the video between 9:30-10 pm in his time

    • @takeUforward
      @takeUforward  ปีที่แล้ว +27

      Yes I could not do it during the morning today. Came back from office and recorded, edited and uploaded 😄

    • @uncannyroaches5933
      @uncannyroaches5933 ปีที่แล้ว +1

      Am hai🤭🤭🤭

    • @rohitprasad5708
      @rohitprasad5708 ปีที่แล้ว +1

      @@takeUforward Thats why your content is the best

  • @3rd_Eye_Gang
    @3rd_Eye_Gang ปีที่แล้ว +24

    Nothing can describe how thankful we're to you for such amazing content.. . God Bless you Striver.. Hope you achieve everything you want ❤️❤️

  • @Ritik7_77
    @Ritik7_77 3 หลายเดือนก่อน +1

    Great teaching by great teacher ❤

  • @kikicode-g5v
    @kikicode-g5v ปีที่แล้ว +7

    15:05 editing mistake 🫡 but no worries

    • @takeUforward
      @takeUforward  ปีที่แล้ว +2

      shit yes, thankfully not a big one

    • @vish-sw9dc
      @vish-sw9dc ปีที่แล้ว

      ​@@takeUforward please make a video on long pressed name

    • @Poojithaalam
      @Poojithaalam 9 หลายเดือนก่อน

      @@takeUforward which tool you are using for white boarding?

  • @dhanviakash726
    @dhanviakash726 หลายเดือนก่อน

    Seriously, I really understood this 😮
    The intuition is just common sense lol,
    If we add negative subarray sum to the next negative element it will decrease the value of our new subarray sum, even if we add negative subarray sum to our next positive element it will again decrease the value of our new subarray sum

  • @yelururao1
    @yelururao1 ปีที่แล้ว

    i saw many videos but not able to understad.... this video gave me complete understading..Thanks bro

  • @chaithrac370
    @chaithrac370 6 หลายเดือนก่อน +2

    Really amazed by the effort you put into making us understand. Thank you, Striver!

  • @radhakishoriiiiiiiiiii7348
    @radhakishoriiiiiiiiiii7348 ปีที่แล้ว

    12:28
    very nice explaination. Very helpful walk through that cleared my confusions

  • @sahadevbhaganagare4761
    @sahadevbhaganagare4761 ปีที่แล้ว +32

    The result will never be lesser than zero because one condition is "if(sum>max) max=sum" and initially sum=0 and max=LONG_MIN. hence, max will always be zero if all the values in the array are negative.

    • @user-zr3eu2oo7s
      @user-zr3eu2oo7s 8 หลายเดือนก่อน +7

      It is returning maxi variable so even if it is sum is negative and we make sum zero and then add a negative number to sum it will be lesser than the maxi variable

    • @abhir4872
      @abhir4872 5 หลายเดือนก่อน +13

      no it will return the biggest -ve number if there are all -ve in array

    • @Mythri333
      @Mythri333 2 หลายเดือนก่อน +1

      if all elements are negative it returning the biggest negative value because even we keep sum=0 when sum if(maxi

  • @tasneemayham974
    @tasneemayham974 ปีที่แล้ว +1

    BEST TEACHERRRR EVERR!!!!!!!!!!

  • @sahanagoudar1647
    @sahanagoudar1647 ปีที่แล้ว +1

    13:57
    Don't carry any negatives into future 😇

  • @factfortune2160
    @factfortune2160 11 หลายเดือนก่อน

    Easiest explaination ever👌👌 thanks bhaiya...!!

  • @stith_pragya
    @stith_pragya 6 หลายเดือนก่อน +2

    Understood....Thank You So Much for this wonderful video.....🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @mrdevil8419
    @mrdevil8419 6 หลายเดือนก่อน

    🎯 Key points for quick navigation:
    00:43 *🧩 Introduction to the problem of finding the maximum subarray sum*
    - Definition of a subarray as a contiguous part of an array
    - Explanation of how to identify subarrays with maximum sum in an array
    02:18 *🔄 Brute force approach to finding the maximum subarray sum*
    - Iterating through all possible subarrays to find the maximum sum
    - Detailed explanation of the nested loops to generate subarrays and calculate sum
    - Analysis of time and space complexity for the brute force approach
    06:14 *👍 Improved approach to finding the maximum subarray sum*
    - Utilizing observations to optimize the brute force approach
    - Updating the sum incrementally without reiterating through each element
    - Analysis of the improved approach's time and space complexity
    07:51 *🚀 Introduction to Kadane's Algorithm for the maximum subarray sum*
    - Description of the Kadane's Algorithm for finding the maximum subarray sum
    - Implementation steps of Kadane's Algorithm for optimizing the solution further
    - Understanding the logic behind dropping negative sums in Kadane's Algorithm
    17:06 *📜 Modifying the Kadane's Algorithm to track and print the subarray with maximum sum*
    - Introduction of additional variables to track the start and end of the subarray
    - Explanation of how to modify the Kadane's Algorithm code to print the subarray with maximum sum
    - Discussion on maintaining the time and space complexity while adding printing functionality
    Made with HARPA AI

  • @suyashshinde2971
    @suyashshinde2971 ปีที่แล้ว +2

    SDE Sheet Day 1 Problem 1 Done!

  • @syedFAHIM-el1wr
    @syedFAHIM-el1wr ปีที่แล้ว +1

    Crystal Clear Understanding !

  • @SurajGupta-gc9tz
    @SurajGupta-gc9tz ปีที่แล้ว

    i was very keen about learning DSA and your sheet and your explanation has boosted this thank you strive bhaiya

  • @SydMohan
    @SydMohan ปีที่แล้ว +1

    Love your explanation of progression of solutions and code walk through. Please keep making precise and amazing content like this. It really helps to stay motivated with solving problems because when I'm stuck, the logic in your vids is explained very clearly. Thanks a lot!!

  • @hareshnayak7302
    @hareshnayak7302 9 หลายเดือนก่อน +1

    Understood,Thank striver for this amazing video.

  • @sohilpathan9006
    @sohilpathan9006 ปีที่แล้ว +2

    If you're doing on leetcode where negeative also consider where code follows,
    int maxSubArray(vector& nums) {
    int cs =0,ms=nums[0];
    for(int i=0; i< nums.size(); i++){
    cs += nums[i];
    ms = max(ms,cs);
    if(cs < 0)
    cs = 0;
    }
    return ms;
    }

  • @manjamalaimm6178
    @manjamalaimm6178 10 หลายเดือนก่อน

    Thank You so much for made this crystal clear understanding about this problem.

  • @KarthikAsam-q3r
    @KarthikAsam-q3r ปีที่แล้ว +1

    bro i really love your explanation ;how ever i explane doudtes to my frnds you explaining in same manner ❤

  • @embarrassed_dodo
    @embarrassed_dodo 5 หลายเดือนก่อน

    Very detailed explanation, it is language agnostic as well, thanks for the video

  • @helloworld004
    @helloworld004 ปีที่แล้ว +2

    class Solution {
    public:
    int maxSubArray(vector& nums) {
    int maxi=nums[0];
    int sum=nums[0];
    for(int i=1;i

  • @cinime
    @cinime ปีที่แล้ว +2

    Understood! Super excellent explanation as always, thank you very very much for your effort!!

  • @ArunKumar-zp8cp
    @ArunKumar-zp8cp ปีที่แล้ว

    Bro really you have good knowledge of DSA...

  • @loneleyEngineer
    @loneleyEngineer 28 วันที่ผ่านมา

    Living in this era where striver exists is like living in era where Ronaldo and messi are alive together. I can't thank enough!

  • @allegragarland9156
    @allegragarland9156 ปีที่แล้ว

    Im new to programming and this was very helpful ~

  • @AleksandrStrizhevskiy
    @AleksandrStrizhevskiy 2 หลายเดือนก่อน

    Thank you for this video, great explanation! I will need it for my exam in an hour haha!

  • @mayurkumbhar2729
    @mayurkumbhar2729 หลายเดือนก่อน

    Great explanation 🎉

  • @vinethasuresh3488
    @vinethasuresh3488 ปีที่แล้ว +5

    1. is the carryforward and sliding window technique is both are same? 2. can you please tell me the difference between carryforward and sliding window technique? it will be really helpful if you explain me sir.

  • @Bigg_boss_trolls
    @Bigg_boss_trolls 2 หลายเดือนก่อน

    Nice man good teaching EXELLENT

  • @sparshverma4030
    @sparshverma4030 ปีที่แล้ว

    understood you are the best teacher. 🙌

  • @isheep9025
    @isheep9025 ปีที่แล้ว +2

    2 pointer approach to solve the problem ,may give tle where 0(n) is expected:
    class Solution {
    public:
    int sums(int prev,int curr,vector nums)
    {
    int s=0;
    for(int i=prev;i

  • @UECAshutoshKumar
    @UECAshutoshKumar 9 หลายเดือนก่อน +2

    Thank you 🙏

  • @JamieFord0109
    @JamieFord0109 หลายเดือนก่อน

    Understood. Thanks Striverr!!1

  • @hunter-js8hy
    @hunter-js8hy 6 หลายเดือนก่อน

    done and dusted ! hats off to striver ..

  • @samuelfrank1369
    @samuelfrank1369 ปีที่แล้ว

    Understood. Thanks a lot. Please upload more videos Bhaiyaaa.

  • @ayushmandliya9493
    @ayushmandliya9493 ปีที่แล้ว +3

    #include
    long long maxSubarraySum(int arr[], int n)
    {
    //Kadan's Alogrithm ->move and keep adding and if less then 0 and then neglect
    long long sum=0;
    long long maxi=LONG_MIN;
    for(int i=0;imaxi){
    maxi=sum;
    }
    if(sum

  • @VarunKaushal-zx9zq
    @VarunKaushal-zx9zq ปีที่แล้ว +1

    Understood, Amazing Lecture Sir!

  • @hengenaavu5737
    @hengenaavu5737 3 หลายเดือนก่อน

    Superb bro, exceptional 🎉🎉🎉

  • @PriyanshuKumar-zd1lq
    @PriyanshuKumar-zd1lq ปีที่แล้ว

    Super explanation with so much love 😃

  • @iitmotivationwithrahullson5930
    @iitmotivationwithrahullson5930 ปีที่แล้ว +2

    you are doing great job striver ❤.. .

  • @StudyEmail-p9u
    @StudyEmail-p9u 11 หลายเดือนก่อน +1

    Understood!.Thank you.

  • @theboredtutor
    @theboredtutor 11 วันที่ผ่านมา

    Thanks for this, super helpful!

  • @manojkumarparuchuri5920
    @manojkumarparuchuri5920 หลายเดือนก่อน

    excellent explanation thanku so much

  • @saumyapandey8940
    @saumyapandey8940 6 หลายเดือนก่อน

    your course is too good

  • @aryanmaniyar3475
    @aryanmaniyar3475 ปีที่แล้ว

    Tired of commenting AMAZING bhaiya ;) !! You're tooooo good :)

  • @amarsharma8582
    @amarsharma8582 ปีที่แล้ว +16

    kadane's algorithm c++ code: there was error in editing so i wrote the code this might help beginners like me :)
    #include
    using namespace std;
    int main()
    {
    int n = 8;
    int arr[n] = {-2, -3, 4, -1, -2, 1, 5, -3};
    long long sum = 0, maxi = LONG_MIN;
    int start = 0, end = 0;
    for (int i = 0; i < 8; i++)
    {
    if (sum == 0)
    {
    start = i;
    }
    sum += arr[i];
    if (sum > maxi)
    {
    maxi = sum;
    end = i;
    }
    if (sum < 0)
    {
    sum = 0;
    }
    }
    for (int i = start; i

  • @archanaverma8771
    @archanaverma8771 ปีที่แล้ว

    Your way of explanation is really outstanding🔥🔥🙌thanks lot and more!!!!

  • @Ashishvatsav
    @Ashishvatsav 10 หลายเดือนก่อน

    Amazing!! Keep going bro⚡

  • @suryansh70
    @suryansh70 11 วันที่ผ่านมา

    perfect explaination.

  • @amitmauryarbl2602
    @amitmauryarbl2602 หลายเดือนก่อน

    Thank you bade bhaiya

  • @shajahan1064
    @shajahan1064 ปีที่แล้ว

    in the brute approach is 3 for loops needed?
    #include
    using namespace std;
    // #include
    int maxSumSubarray_brute(vectorarray){
    int prevsum =0;
    int maxsum = INT_MIN;
    for(int i=0;i

  • @stutidutta3922
    @stutidutta3922 ปีที่แล้ว

    Thanks for explanation

  • @aslamcodes
    @aslamcodes ปีที่แล้ว

    8:20 "Do not worry" ✨

  • @prabalsharma3007
    @prabalsharma3007 ปีที่แล้ว

    great concepts , understood everything

  • @YerramArun
    @YerramArun ปีที่แล้ว

    Understood ❤bhaiya❤❤

  • @akshatgupta1728
    @akshatgupta1728 5 หลายเดือนก่อน +2

    sir i know its weird to ask but sir i want to ask you that we just learned the method by watching lectures cause i don't know about kadane's algorithm and more such type of methods, or we have to practice it without watching the video .pls reply what is better to do.

  • @swagnikdhar6010
    @swagnikdhar6010 ปีที่แล้ว +1

    Absolutely Amazing ✌️🔥

  • @tulsilukhi1182
    @tulsilukhi1182 7 หลายเดือนก่อน

    Best explanation everr

  • @lofiboy7866
    @lofiboy7866 2 หลายเดือนก่อน +1

    In interview can we give direct optimal solutions only ? Please tell anyone here

  • @manansarraf73
    @manansarraf73 4 หลายเดือนก่อน

    Nice explanation bhaiya

  • @SriSarthak257
    @SriSarthak257 7 หลายเดือนก่อน

    Understood striver! 🔥👍

  • @Sharuthi727
    @Sharuthi727 3 หลายเดือนก่อน

    Thank you striver your videos are helping alot

  • @rajatverma3692
    @rajatverma3692 ปีที่แล้ว +1

    14:00 rule of life and rule for Kadane

  • @EC20022ELAKKIYAC
    @EC20022ELAKKIYAC 11 หลายเดือนก่อน

    Completely Understood!

  • @AmanPandey-bd1sj
    @AmanPandey-bd1sj ปีที่แล้ว

    Thanks brother Best Explanation😊

  • @shotbotop3790
    @shotbotop3790 5 หลายเดือนก่อน

    For those solving this in 2024 , if you try to submit this on leetcode this will fail on the test case [-1] since obviously our array has only one neg element ,it shall return -1 but in our case it will return 0..., You can refer the following code to solve it instead :
    int maxi = nums[0]; // Initialize maxi to the first element
    int sum = nums[0]; // Initialize sum to the first element
    int n = nums.size();

    for (int i = 1; i < n; i++) {
    sum = max(nums[i], sum + nums[i]);
    maxi = max(maxi, sum);
    }

    return maxi;
    }

    • @graviton001
      @graviton001 5 หลายเดือนก่อน

      I know it should not work but idk why its working on lc?😅

    • @graviton001
      @graviton001 5 หลายเดือนก่อน

      I added the test case -1 from my side then also its working but it should return 0 LOL.

  • @rudramohanmishra4578
    @rudramohanmishra4578 ปีที่แล้ว +2

    Hi ,
    I am unclear why O(n^3) solution is needed even in brute force solution when it can be done in O(n^2) solution , sum can be found out in the 2nd loop itself.
    If you read the post please clear the doubt.
    thanks

    • @Piyush-yp2po
      @Piyush-yp2po ปีที่แล้ว

      Yes it can be done in n², declare sum variable after i loop, before j loop, while adding elmts in sum in the j loop, everytime keep updating max, once j loop finishes, sum will be back to zero

  • @ganeshjaggineni4097
    @ganeshjaggineni4097 หลายเดือนก่อน

    NICE SUPER EXCELLENT MOTIVATED

  • @piaknow3881
    @piaknow3881 ปีที่แล้ว +1

    Thank you very much bhaiya for these.
    In upcoming videos please add general approach for techniques like sliding window, two pointers etc techniques as the way you give for recursion and dp etc.
    Thank you once again bhaiya

  • @infernogamer52
    @infernogamer52 ปีที่แล้ว

    Understood bhaiya!

  • @nishant1456
    @nishant1456 ปีที่แล้ว +1

    Striver is Love yr❤

  • @tamilmukbang3789
    @tamilmukbang3789 8 หลายเดือนก่อน

    Understood.. thank you so much bro

  • @prateekmahajan5490
    @prateekmahajan5490 8 หลายเดือนก่อน

    Understood. Thanks a ton 😇

  • @sach_in_sigma
    @sach_in_sigma 4 หลายเดือนก่อน

    sir in the follow up question if we take the array as {-1,-2,-3,-4} your solution will give answer as (3,3) whereas the correct answer should have been (0,0)

  • @m.afnan2018
    @m.afnan2018 ปีที่แล้ว +1

    Can it optimise further more ?
    Follow up question:
    If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

    • @ritabhsharma6627
      @ritabhsharma6627 ปีที่แล้ว +3

      Man copy pasted the Follow Up of Leetcode on this question.

  • @AniketKumar-hf2bo
    @AniketKumar-hf2bo 11 หลายเดือนก่อน

    understood ,thnx for the video ❤❤❤❤❤❤

  • @navkaransinghbrar4380
    @navkaransinghbrar4380 ปีที่แล้ว

    understood
    // first time bro

  • @d3vi980
    @d3vi980 7 หลายเดือนก่อน +1

    nums = [-1, -2, -3, -4]
    According to your solution, the start will be 3 in this case but the correct answer should be 0

  • @culeforever5408
    @culeforever5408 ปีที่แล้ว +1

    understood 😇

  • @ashishdhal4614
    @ashishdhal4614 ปีที่แล้ว

    Can't wait for binary search series