Maximum Sum SubArray (Kadane's algorithm) (Largest Sum Contigous SubArray)

Поділитися
Вставка
  • Опубліковано 6 січ 2025

КОМЕНТАРІ •

  • @tanmayagarwal8513
    @tanmayagarwal8513 3 роки тому +17

    I love the way how innocently he teaches.

  • @avinashkumar3643
    @avinashkumar3643 3 роки тому +11

    Best Explanation of Kadane's Algo I have ever seen. The most important thing that you explained the algo into two parts -
    1. Find the greatest sum
    2. Find the starting and ending indices of subarray containing the max sum

  • @DAVISBENNYMIS
    @DAVISBENNYMIS 5 років тому +8

    (2 Line solution ) :-
    int Kadane(int[] arr){
    int localmax=arr[0];
    int globalmax=arr[0];
    for(int i=1;i

    • @ajayshukla7238
      @ajayshukla7238 5 років тому

      nice one

    • @premkumareaswaran6875
      @premkumareaswaran6875 4 роки тому

      What's n here? If it is the length of the array, I get 22 for the above array that Vivekanand has used for the tutorial. Did you try using it before posting the 2-line answer?

    • @sandip_kanzariya8476
      @sandip_kanzariya8476 2 роки тому +1

      Superb solution ☺️😃 enjoy 🤠
      Can you explain this solution ?

  • @armanmanukyan1970
    @armanmanukyan1970 3 роки тому

    After wandering in a lot of youtube channels, eventually I've found the best explanation here. Thanks.

  • @SunilKumar18
    @SunilKumar18 7 років тому +9

    Great work man. Brilliant explanation. Please keep doing more videos. hope your channel grows.

  • @mahesh_kndpl
    @mahesh_kndpl 4 роки тому

    The way you explain is so clear. Thanks man.

  • @gautamtyagi8846
    @gautamtyagi8846 3 роки тому

    brilliant explanation! the big thing is he makes it much easier to understand. thanks a lot.

  • @dascalucosmin6137
    @dascalucosmin6137 6 років тому +3

    Thank you for explaining the Maximum Sum Subarray algorithm in such an easy way. You are really good teacher! Keep up the good work!!!

  • @vaishnavia.n.312
    @vaishnavia.n.312 3 роки тому

    the way u explain is crystal clear, thank nu so much @vivek.

  • @jitendarsahani11
    @jitendarsahani11 5 років тому

    Bahut dino se struggle kr rha tha...lekin aaj samaj mei aa gaya. Thanx...

  • @singarajusureshkumar2330
    @singarajusureshkumar2330 2 роки тому

    one n only one best explaination of kadane's algo

  • @Dragondavid
    @Dragondavid 6 років тому +17

    What if all elements are negative value? How do you dandle max_ending_here < 0 ? How would you track indices?

    • @komuravellyvenky
      @komuravellyvenky 5 років тому +6

      Above algorithm will not work if all the elements are negative. Please refer : www.techiedelight.com/maximum-subarray-problem-kadanes-algorithm/

    • @tejeswarsahu2498
      @tejeswarsahu2498 5 років тому

      This info is very helpful...

    • @edwardcerverizzo7363
      @edwardcerverizzo7363 5 років тому

      Solution is trivial. Return an empty array. Sum of all elements is zero (since there are no elements). 0 is strictly greater than any combination of negative numbers. You could create a subroutine to scan the array and return this result if this is the case. Total running time should be O(2n) which is still O(n).

    • @jogeswararaonynala1591
      @jogeswararaonynala1591 5 років тому

      Then just take the element with with highest value in all negative numbers

    • @sharidass1408
      @sharidass1408 5 років тому

      @@komuravellyvenky this code also fails if array is [-1]

  • @princekumarmaurya1763
    @princekumarmaurya1763 3 роки тому

    Best vedio I have ever seen for this solution 👍👍👍👍👍👍

  • @christmas_fox-marychristma2801
    @christmas_fox-marychristma2801 4 роки тому +3

    Thank you so much for posting this videos! You have such clear explanations!

  • @AbhishekJain-pm2jn
    @AbhishekJain-pm2jn 3 роки тому +1

    Thank you sir for explaining in such a easy way 🙏

  • @meherkhan933
    @meherkhan933 6 років тому +1

    You are great Sir! You make so simple with your extraordinary explanation! Thank you very much!!!

  • @b.saisrinivas1636
    @b.saisrinivas1636 3 роки тому

    Best explanation that i have seen for this algo

  • @LarryRuane
    @LarryRuane 7 років тому +1

    Great explanation, I love it. One small simplification may be that max_so_far can be initialized to zero, rather than a[0]. Another advantage of making that change is that if the array is zero-length (size==0) you won't be accessing invalid memory.

    • @michaele5757
      @michaele5757 2 роки тому +3

      you can handle an empty array with a base case that checks for an empty array and simply returns (i.e. if (arr.length === 0) return). If you initialize max_so_far to 0, a test case of [-2] (or any negative number) will fail. I used [-2] as an example because that's the test case I failed on Leetcode lol

  • @SmartProgramming
    @SmartProgramming 6 років тому

    awesome explanation sir, very very helpful, thanks a lot for this tutorial 👍👍👍👍🙂🙂🙂🙂

  • @Piggybacking
    @Piggybacking 2 роки тому

    Thank you so much ! your explanation is so helpful.

  • @chetanshrivastava3762
    @chetanshrivastava3762 4 роки тому

    Nice explanation sir...You have great patience which is must for a programmer.
    Regarding this example,we can take a lesser size array to save time.

  • @rajporu9
    @rajporu9 7 років тому

    Vivek, the way you explain is crystal clear by giving examples. Keep up the good work. God Bless.

  • @anindita2816
    @anindita2816 5 років тому

    Very good explanation. You're that favorite teacher kind of person! :)

  • @nikhilbhatt9823
    @nikhilbhatt9823 5 років тому

    I think for efficient subarray it should be **if(max_ending_here

  • @sanketkumar1576
    @sanketkumar1576 7 років тому

    best explanation among all videos on this topic on youtube. thank you !

  • @manojbgm
    @manojbgm 7 років тому +1

    Nice Video. Well structured. Liked the way you simplified the solution in 2 parts.
    1) find the max sum
    2) look for index
    Nice work thank you.....

  • @rahul-patil
    @rahul-patil 6 років тому +3

    The second if condition is the core of this algo.

  • @rhimanshu6288
    @rhimanshu6288 4 роки тому +1

    You made things understand easier

  • @dorararo
    @dorararo 3 роки тому

    can we print the largest sub-array that was found , using Kadane algo?..we can get the end point of that sub-array but how do we get its starting point.

  • @dharnisingh11
    @dharnisingh11 4 роки тому

    What if we do not have any negative number present in the array?

  • @Mohitsingh-mk8vr
    @Mohitsingh-mk8vr 2 роки тому

    best explanation of kadane algo

  • @rushi901
    @rushi901 6 років тому +1

    Any idea about how to convert the finding the start index and end index into 2 D array ?

  • @PramodKumar-rc9zy
    @PramodKumar-rc9zy 6 років тому

    Nice explain sir before watching this video i was confused that what the meaning of this algo but now cleared thanks a lot sir

  • @tirnasircar2938
    @tirnasircar2938 4 роки тому

    What will happen if there are no negative numbers in the array?

  • @edwardcerverizzo7363
    @edwardcerverizzo7363 5 років тому +1

    I've seen this problem posted as a dynamic programming problem on Leetcode. I like this way better though. Is there any argument to do DP over this way?

  • @Dyslexic_Neuron
    @Dyslexic_Neuron 5 років тому +1

    your understanding of the problem is Bad.....
    The way I see the problem is 3 cases : Life Hope and Death.
    We'll take 2 sum variables' : prev_sum and current_sum.
    Life is when we encounter only positive number: we will update prev_sum in this case
    Hope is when we encountered a negative number but that negative number has not made my current sum less than zero so there is still hope that some next number may repair the damage done by the negative number. : we will update prev_sum when current_sum > prev_sum
    Death is when the current sum becomes negative .....so now in this case we have re-initialize the starting point for calculating current sum
    Below is my smart : : code
    public static int findLargestSum(int a[]) {
    int end = 0;
    int current_sum = 0;
    int prev_sum = 0;
    while (end < a.length) {
    current_sum += a[end];
    if (current_sum < 0) { // death case
    current_sum = 0;
    }
    if (current_sum > prev_sum) {
    prev_sum = current_sum;
    }
    end++;
    }
    return prev_sum;

  • @brijbhushanawasthi7679
    @brijbhushanawasthi7679 7 років тому +54

    Set the speed to 1.5, Thank me later:)

  • @ykoc3879
    @ykoc3879 2 роки тому

    why we equalise the max ending here to zero on second if

  • @shankysays
    @shankysays 3 роки тому

    If my array is -5 -4 -3-1 -2 will this algo work?

  • @mani8110
    @mani8110 Рік тому

    thank you best explanation❤❤

  • @LarryRuane
    @LarryRuane 7 років тому

    One more observation ... What if the array consists entirely of negative values? This algorithm will report start and end both zero, which is a subarray of length 1. It seems like it may be better, in general, for the result to be reported as a start index and a length (rather than end index). Then the correct answer in this case (all elements negative) is start = zero (or really anything), length = zero. I implemented this here: codepad.org/irM2hs1b

  • @shobhitmittal77
    @shobhitmittal77 7 років тому +2

    Hi Vivekanan sirji, you are doing a great job..
    I have watched some of your other videos too and must say they are simply awesome and to the point..
    It will be even better if you could organize your uploaded videos into a playlist, it will direct the users to your other videos.... just a suggestion :)

    • @srinidhiii
      @srinidhiii 7 років тому

      well said.it ll be great if a playlist is created topicwise.Your tutorial is awesome sir

    • @vivekanandkhyade
      @vivekanandkhyade  7 років тому

      Yes shobhit i will make it...! Thanks ....!

    • @vivekanandkhyade
      @vivekanandkhyade  7 років тому

      Yes srinidhi ...will make it..!

  • @Ankit13555
    @Ankit13555 7 років тому

    you are simple and great....plzz provide some good and tuff DP problems ...:)

  • @ayonkar1534
    @ayonkar1534 7 років тому

    What if all the elements in the array is set to 0?

  • @prudhviprasad6386
    @prudhviprasad6386 4 роки тому

    Thnks sir it was very detailed explanation

  • @DurgaShiva7574
    @DurgaShiva7574 3 роки тому

    will this algo works if we have the max sum in -ve itself....i.e if all the elements of the array are -ve, then what to do ?

  • @TanujMishra077
    @TanujMishra077 7 років тому

    Great work Sir. Nice explanation.

  • @ghughal
    @ghughal 5 років тому

    Will this algorithm work for an input array {5, -2, -1, 3, -4}. Just a second set of eyes to verify we get the result as maximum length of the subarray is 4. Please help!

  • @prakashkumaran9767
    @prakashkumaran9767 6 років тому

    Good work. Easy to learn. Thank you..

  • @alokkumarsingh4118
    @alokkumarsingh4118 4 роки тому

    Sir will the algorithm work if the maximum sum is negative?

  • @MyLifeMyWorld08
    @MyLifeMyWorld08 6 років тому +1

    Hello Sir,
    Can you please post video for solution of "maximum/minimum element from each sub-array of size 'k'" in O(n) ?
    Thanks in advance.

  • @sailkargutkar1980
    @sailkargutkar1980 6 років тому

    Best way to explain max sub array prob thanks

  • @tapanjeetroy8266
    @tapanjeetroy8266 5 років тому

    Thanks a lot lot sir..you explain us so well

  • @harshtulsyan9894
    @harshtulsyan9894 7 років тому

    Nice Explanation sir...
    Please upload more videos on Dynamic Programming..!!

  • @ravikishoretottaramudi1263
    @ravikishoretottaramudi1263 2 роки тому

    Very good explanation sir

  • @naveensharma5060
    @naveensharma5060 7 років тому

    finally i got the video by which i have understood this concept very easily.

  • @shivam_0002
    @shivam_0002 6 років тому

    Great Explanation, make some more videos. Thanks

  • @ASHISHSINGH-nj6es
    @ASHISHSINGH-nj6es 5 років тому +6

    Algorithm tracing != Explaining

  • @gaymonkey5270
    @gaymonkey5270 6 років тому +4

    What if all values are negative?????

    • @compeng2013
      @compeng2013 6 років тому +4

      it will return the greatest negative number. So if you have an array = [-6, -5, -20, -1], it will return -1

    • @sauravbhagat4737
      @sauravbhagat4737 6 років тому +3

      @@compeng2013 No it is going to return 0, we need to modify the code little bit

    • @jogeswararaonynala1591
      @jogeswararaonynala1591 5 років тому

      Just take the highest elment in the negative no

  • @arbindsharma1423
    @arbindsharma1423 4 роки тому

    sir how to approach the algo please teach that not as ratta mar study

  • @YogeshKumar-ye8nd
    @YogeshKumar-ye8nd 7 років тому

    if I will take only all elements negative except first then this code will not give the index of maximum subarray you can check it

  • @somesbhowmick2082
    @somesbhowmick2082 5 років тому

    Great , Great simply you explain I understand, keep doing it , I want learn more algorithm topic probmel

  • @sagarsalunkhe6429
    @sagarsalunkhe6429 7 років тому

    Thanks for explanation
    very well done

  • @hirakmondal6174
    @hirakmondal6174 4 роки тому +1

    faulty explanation.. will fail for sample case like [-2 5 -1] where the output of the maxsum with his logic is 3 but it should be 5 actually. *max_so_far* at the starting should be the maximum element of the array.

  • @niharikaepuri3305
    @niharikaepuri3305 7 років тому

    Can you please make a video on Largest subarray with equal number of 0s and 1s with O(N) time complexity and also please make a video on Maximum Product Subarray?

  • @MrVazanth
    @MrVazanth 7 років тому

    Hi Vivekanand,
    Please help me with video to print given matrix in diagonal order
    Thanks

  • @Vishal-nc8ju
    @Vishal-nc8ju 5 років тому

    sir if whole array is -ve then it won't work?

    • @mohitarora2190
      @mohitarora2190 5 років тому

      if the the whole array is -ve then just find the smallest -ve element and its position because that would be largest sum sub array

  • @rajatmishra3572
    @rajatmishra3572 4 роки тому

    nice explanation!!

  • @shivamvyas8899
    @shivamvyas8899 4 роки тому

    Hello sir, can u make a video on Z algorithm for String search.

  • @swapnil814
    @swapnil814 5 років тому

    Thank you. You made tough problem, easy. :)

  • @abhishekbisherwal6856
    @abhishekbisherwal6856 5 років тому

    NO need to check whether the sum is less than zero or not else do check whether calculated sum is greater than added element or not ? and rest will be same .

  • @aryangarg9072
    @aryangarg9072 4 роки тому

    Good explanation

  • @modernsanskari4398
    @modernsanskari4398 7 років тому +2

    grt sir .But this question was asked in my interview but i was not aware of this algo.But i gave a brute force solution by using two loops O(n^2).Here in this algo it is taking linear time o(n). Can we make it to O(log n) by using divide and conquer approach?

    • @santhoshcts5
      @santhoshcts5 7 років тому +5

      if the array is not sorted , we cannot do it in o(logn) . in other way , meaning only binary search will make time complexity of o(logn) and binary search will work only on sorted arrays .

    • @Alexc99xd
      @Alexc99xd 6 років тому

      You could divide and conquer in O(nlog(n)) recursively Find max on left, max on right, and find max that crosses the midpoint

  • @beholdpain
    @beholdpain 6 років тому

    Nice, Very Detailed!

  • @anshubansal2008
    @anshubansal2008 6 років тому

    Great Explanation.

  • @smirkedShoe
    @smirkedShoe 7 років тому +5

    Where was the explanation of logic in this video... He only puts value and iterate through the loops...Everyone can do that..Please explain the logic!

    • @shrijanaryal4923
      @shrijanaryal4923 7 років тому +6

      The logic is that you have two variables as you go through the loop. One calculates temp_max and the other max_so_far. As soon as temp_max becomes greater than max_so_far, make max_so_far equals to temp_max. But remember temp_max may not always be greater. And also when temp_max is negative, set it to 0 because you dont want to disturb the previous max by some negative numbers. I hope it helps..

    • @kapilchhipa2143
      @kapilchhipa2143 6 років тому

      gandu dekh kahe rha h phr

  • @karanshah9310
    @karanshah9310 4 роки тому

    Longest Palindrome in a string

  • @jakusam4564
    @jakusam4564 6 років тому

    sir thank you very much.i am from bangladesh.

  • @saswatibhattacharjee7387
    @saswatibhattacharjee7387 6 років тому

    Is Kadane's Algorithm applicable if all the element in the array are positive integer? I have an array like {4,2,1,10,3,5} when I am using this algorithm it return 25 as sum and all the elements . I cannot find any sub array. If I add 10+3+5=18 ,get 18 which is the largest sum in this array also {10,3,5} represent a sub array. For this problem what type of algorithm applicable? Your explanation is very clear and easily understandable. Thank you.

    • @sauravbhagat4737
      @sauravbhagat4737 6 років тому

      If array contains all positive numbers, then sum of all elements will be maximum. So the sub array will be the whole array.

  • @karthikd7460
    @karthikd7460 5 років тому

    After seeing this video, I feel your one of the LC problems god!!!

  • @saurabhsharma8577
    @saurabhsharma8577 6 років тому

    Nice Work, Thank you Sir

  • @mordiabukarat3985
    @mordiabukarat3985 6 років тому

    very helpful , thank you

  • @bihanbanerjee
    @bihanbanerjee 3 роки тому +1

    thank you

  • @shimpyasthana5561
    @shimpyasthana5561 5 років тому

    Great work

  • @mohamedanwar6073
    @mohamedanwar6073 7 років тому

    you have account in codeforces web site ?

  • @akash7752
    @akash7752 4 роки тому

    will not work for all negative no in an array

  • @mohit0001ish
    @mohit0001ish 6 років тому

    Very Well Explained :)

  • @sivas8620
    @sivas8620 7 років тому

    Please do a video Tutorial on Flatten a Linkedlist, Union of 2 Linkedlist

  • @armaanj7
    @armaanj7 5 років тому +3

    You didn't explain how the algorithm works. This was simply a dry run which a 12 yo could have done

  • @Hampirathna
    @Hampirathna 4 роки тому

    Sir plz explain dijkstras algorithm with snippet like this sir

  • @DhananjayTyagi24
    @DhananjayTyagi24 5 років тому

    Explained well!

  • @mohamedanwar6073
    @mohamedanwar6073 7 років тому

    please do video , print all different simple cycle in undirected graph . 🙌

  • @Sudhanshusable98
    @Sudhanshusable98 4 роки тому

    Thank you sir 🙏

  • @sudhanshutiwari7089
    @sudhanshutiwari7089 6 років тому

    what about the array.,,,,,, 4 , -3 ,-2 ,,,,, will this algorithm work on it ,,,,,If yes then how ......,,,,PLEASE HELP

    • @codelover847
      @codelover847 6 років тому

      {4},{-3},{-2},{4,-3},{4,-2},{-3,-2},{4,-3,-2}....If u find the sum of the elements of each subarray you will see that (in this case) 4 is the highest..

  • @baibhavghimire3827
    @baibhavghimire3827 6 років тому

    Nice one..Yes need to do like 1.5x or 2x..lol...But great presentation!!

  • @prateekkanujiya9775
    @prateekkanujiya9775 5 років тому

    Awesome 👍

  • @argharoy6571
    @argharoy6571 4 роки тому

    Sir you are awesome

  • @Muthuvlog104
    @Muthuvlog104 3 роки тому

    Good explanatiin

  • @adithyareddy7611
    @adithyareddy7611 7 років тому

    HI Sir, Can you upload Matrix related java programs with algorithm explanation ... Please sir

  • @theuntoldtree
    @theuntoldtree 3 роки тому

    Aap direct gfg ka solution mt daala kro plz