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

Find the subarray with the maximum sum in an array. The solution is given by the Kadane's algorithm. Also called Largest Sum Contigous SubArray.

Пікірлер: 184

  • @tanmayagarwal8513
    @tanmayagarwal85133 жыл бұрын

    I love the way how innocently he teaches.

  • @avinashkumar3643
    @avinashkumar36433 жыл бұрын

    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
    @DAVISBENNYMIS5 жыл бұрын

    (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

    3 жыл бұрын

    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

    Жыл бұрын

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

  • @dascalucosmin6137
    @dascalucosmin61376 жыл бұрын

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

  • @armanmanukyan1970
    @armanmanukyan19703 жыл бұрын

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

  • @meherkhan933
    @meherkhan9336 жыл бұрын

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

  • @mahesh_kndpl
    @mahesh_kndpl4 жыл бұрын

    The way you explain is so clear. Thanks man.

  • @gautamtyagi8846
    @gautamtyagi88463 жыл бұрын

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

  • @christmas_fox-marychristma2801
    @christmas_fox-marychristma28014 жыл бұрын

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

  • @SunilKumar18
    @SunilKumar187 жыл бұрын

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

  • @vaishnavia.n.312
    @vaishnavia.n.3123 жыл бұрын

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

  • @singarajusureshkumar2330
    @singarajusureshkumar23302 жыл бұрын

    one n only one best explaination of kadane's algo

  • @rushi901
    @rushi9016 жыл бұрын

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

  • @jitendarsahani11
    @jitendarsahani114 жыл бұрын

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

  • @PramodKumar-rc9zy
    @PramodKumar-rc9zy6 жыл бұрын

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

  • @edwardcerverizzo7363
    @edwardcerverizzo73635 жыл бұрын

    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?

  • @chetanshrivastava3762
    @chetanshrivastava37624 жыл бұрын

    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.

  • @LarryRuane
    @LarryRuane7 жыл бұрын

    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 жыл бұрын

    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

  • @ghughal
    @ghughal5 жыл бұрын

    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!

  • @dorararo
    @dorararo3 жыл бұрын

    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.

  • @Piggybacking
    @Piggybacking Жыл бұрын

    Thank you so much ! your explanation is so helpful.

  • @dharnisingh11
    @dharnisingh114 жыл бұрын

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

  • @SmartProgramming
    @SmartProgramming5 жыл бұрын

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

  • @princekumarmaurya1763
    @princekumarmaurya17633 жыл бұрын

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

  • @tirnasircar2938
    @tirnasircar29383 жыл бұрын

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

  • @somesbhowmick2082
    @somesbhowmick20825 жыл бұрын

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

  • @b.saisrinivas1636
    @b.saisrinivas16363 жыл бұрын

    Best explanation that i have seen for this algo

  • @shankysays
    @shankysays3 жыл бұрын

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

  • @harshtulsyan9894
    @harshtulsyan98947 жыл бұрын

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

  • @alokkumarsingh4118
    @alokkumarsingh41183 жыл бұрын

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

  • @nikhilbhatt9823
    @nikhilbhatt98235 жыл бұрын

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

  • @sanketkumar1576
    @sanketkumar15767 жыл бұрын

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

  • @vivekanandkhyade

    @vivekanandkhyade

    7 жыл бұрын

    Thanks Sanket..!

  • @prakashkumaran9767
    @prakashkumaran97675 жыл бұрын

    Good work. Easy to learn. Thank you..

  • @AbhishekJain-pm2jn
    @AbhishekJain-pm2jn2 жыл бұрын

    Thank you sir for explaining in such a easy way 🙏

  • @shivam_0002
    @shivam_00025 жыл бұрын

    Great Explanation, make some more videos. Thanks

  • @yunuskocatas3879
    @yunuskocatas38792 жыл бұрын

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

  • @Ankit13555
    @Ankit135557 жыл бұрын

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

  • @ayonkar1534
    @ayonkar15346 жыл бұрын

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

  • @YogeshKumar-ye8nd
    @YogeshKumar-ye8nd6 жыл бұрын

    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

  • @tapanjeetroy8266
    @tapanjeetroy82665 жыл бұрын

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

  • @MyLifeMyWorld08
    @MyLifeMyWorld086 жыл бұрын

    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.

  • @niharikaepuri3305
    @niharikaepuri33056 жыл бұрын

    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?

  • @ravikishoretottaramudi1263
    @ravikishoretottaramudi12632 жыл бұрын

    Very good explanation sir

  • @anindita2816
    @anindita28165 жыл бұрын

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

  • @koreancaptain2955

    @koreancaptain2955

    4 жыл бұрын

    han rat lo ise

  • @bharatprakashparakh9601

    @bharatprakashparakh9601

    4 жыл бұрын

    kzread.info/dash/bejne/n6Oor6qCiLDTqs4.html

  • @Mohitsingh-mk8vr
    @Mohitsingh-mk8vr Жыл бұрын

    best explanation of kadane algo

  • @swapnil814
    @swapnil8145 жыл бұрын

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

  • @rhimanshu6288
    @rhimanshu62883 жыл бұрын

    You made things understand easier

  • @naveensharma5060
    @naveensharma50607 жыл бұрын

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

  • @sailkargutkar1980
    @sailkargutkar19805 жыл бұрын

    Best way to explain max sub array prob thanks

  • @arbindsharma1423
    @arbindsharma14233 жыл бұрын

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

  • @DurgaShiva7574
    @DurgaShiva75743 жыл бұрын

    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 ?

  • @yashwanthjonnagaddala9944

    @yashwanthjonnagaddala9944

    3 жыл бұрын

    No this works for everything

  • @saurabhsharma8577
    @saurabhsharma85776 жыл бұрын

    Nice Work, Thank you Sir

  • @anshubansal2008
    @anshubansal20086 жыл бұрын

    Great Explanation.

  • @prudhviprasad6386
    @prudhviprasad63863 жыл бұрын

    Thnks sir it was very detailed explanation

  • @shivamvyas8899
    @shivamvyas88993 жыл бұрын

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

  • @beholdpain
    @beholdpain5 жыл бұрын

    Nice, Very Detailed!

  • @Dragondavid
    @Dragondavid5 жыл бұрын

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

  • @komuravellyvenky

    @komuravellyvenky

    5 жыл бұрын

    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

    4 жыл бұрын

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

  • @sharidass1408

    @sharidass1408

    4 жыл бұрын

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

  • @rahul-patil
    @rahul-patil5 жыл бұрын

    The second if condition is the core of this algo.

  • @rajatmishra3572
    @rajatmishra35724 жыл бұрын

    nice explanation!!

  • @mohit0001ish
    @mohit0001ish6 жыл бұрын

    Very Well Explained :)

  • @aryangarg9072
    @aryangarg90723 жыл бұрын

    Good explanation

  • @DhananjayTyagi24
    @DhananjayTyagi245 жыл бұрын

    Explained well!

  • @mani8110
    @mani811010 ай бұрын

    thank you best explanation❤❤

  • @rajporu9
    @rajporu97 жыл бұрын

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

  • @manojbgm
    @manojbgm7 жыл бұрын

    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.....

  • @vivekanandkhyade

    @vivekanandkhyade

    7 жыл бұрын

    Thanks Manoj..!

  • @mordiabukarat3985
    @mordiabukarat39855 жыл бұрын

    very helpful , thank you

  • @karthikd7460
    @karthikd74604 жыл бұрын

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

  • @adithyareddy7611
    @adithyareddy76117 жыл бұрын

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

  • @LarryRuane
    @LarryRuane7 жыл бұрын

    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

  • @TanujMishra077
    @TanujMishra0776 жыл бұрын

    Great work Sir. Nice explanation.

  • @vivekanandkhyade

    @vivekanandkhyade

    6 жыл бұрын

    Thanks Tanuj.

  • @josephmorales652
    @josephmorales6526 жыл бұрын

    Thanks man!

  • @shimpyasthana5561
    @shimpyasthana55615 жыл бұрын

    Great work

  • @baibhavghimire3827
    @baibhavghimire38276 жыл бұрын

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

  • @bihanbanerjee
    @bihanbanerjee3 жыл бұрын

    thank you

  • @modernsanskari4398
    @modernsanskari43987 жыл бұрын

    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 жыл бұрын

    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

    5 жыл бұрын

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

  • @argharoy6571
    @argharoy65714 жыл бұрын

    Sir you are awesome

  • @shobhitmittal77
    @shobhitmittal777 жыл бұрын

    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..!

  • @sagarsalunkhe6429
    @sagarsalunkhe64297 жыл бұрын

    Thanks for explanation very well done

  • @vivekanandkhyade

    @vivekanandkhyade

    7 жыл бұрын

    Thanks Sagar Bhau...!

  • @Dyslexic_Neuron
    @Dyslexic_Neuron5 жыл бұрын

    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 current_sum += a[end]; if (current_sum current_sum = 0; } if (current_sum > prev_sum) { prev_sum = current_sum; } end++; } return prev_sum;

  • @MrVazanth
    @MrVazanth7 жыл бұрын

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

  • @vivekanandkhyade

    @vivekanandkhyade

    7 жыл бұрын

    Yes i will upload the matrix video very soon..!

  • @akash7752
    @akash77524 жыл бұрын

    will not work for all negative no in an array

  • @hemanth8444
    @hemanth84443 жыл бұрын

    Sir plz explain dijkstras algorithm with snippet like this sir

  • @ASHISHSINGH-nj6es
    @ASHISHSINGH-nj6es5 жыл бұрын

    Algorithm tracing != Explaining

  • @Sudhanshusable98
    @Sudhanshusable984 жыл бұрын

    Thank you sir 🙏

  • @Muthuvlog104
    @Muthuvlog1042 жыл бұрын

    Good explanatiin

  • @prateekkanujiya9775
    @prateekkanujiya97755 жыл бұрын

    Awesome 👍

  • @jakusam4564
    @jakusam45646 жыл бұрын

    sir thank you very much.i am from bangladesh.

  • @ShivangiSingh-wc3gk
    @ShivangiSingh-wc3gk6 жыл бұрын

    Thank You

  • @abhishekbisherwal6856
    @abhishekbisherwal68565 жыл бұрын

    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 .

  • @Vishal-nc8ju
    @Vishal-nc8ju4 жыл бұрын

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

  • @mohitarora2190

    @mohitarora2190

    4 жыл бұрын

    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

  • @brijbhushanawasthi7679
    @brijbhushanawasthi76796 жыл бұрын

    Set the speed to 1.5, Thank me later:)

  • @RahulGuptarrg

    @RahulGuptarrg

    6 жыл бұрын

    Thank u bro :)

  • @shobitshobit

    @shobitshobit

    6 жыл бұрын

    Thank u bro :)

  • @LV-ei1ce

    @LV-ei1ce

    6 жыл бұрын

    Lol ! Thank you bro :)

  • @stndwlf5862

    @stndwlf5862

    5 жыл бұрын

    Thank U Bro :)

  • @Rahulsingh-bu6jh

    @Rahulsingh-bu6jh

    4 жыл бұрын

    i suggest 2.0x

  • @muhammahanisuzzaman5493
    @muhammahanisuzzaman54933 жыл бұрын

    Carry On...

  • @Bakepichai
    @Bakepichai6 жыл бұрын

    Keep it up

  • @mohamedanwar6073
    @mohamedanwar60737 жыл бұрын

    you have account in codeforces web site ?

  • @vivekanandkhyade

    @vivekanandkhyade

    7 жыл бұрын

    No Mohamed...!

  • @yunuskocatas3879
    @yunuskocatas38792 жыл бұрын

    perfect explenentation

  • @sudhanshutiwari7089
    @sudhanshutiwari70896 жыл бұрын

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

  • @codelover847

    @codelover847

    5 жыл бұрын

    {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..

  • @gaymonkey5270
    @gaymonkey52706 жыл бұрын

    What if all values are negative?????

  • @compeng2013

    @compeng2013

    6 жыл бұрын

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

  • @sauravbhagat4737

    @sauravbhagat4737

    5 жыл бұрын

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

  • @jogeswararaonynala1591

    @jogeswararaonynala1591

    4 жыл бұрын

    Just take the highest elment in the negative no

  • @srinidhiii
    @srinidhiii7 жыл бұрын

    awesome

  • @mahal9647
    @mahal96475 жыл бұрын

    Thanks Vivek

  • @sireeshakandula1031
    @sireeshakandula10316 жыл бұрын

    Biconnecting components and dfs