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

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

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

  • @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

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

    I love the way how innocently he teaches.

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

  • @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!!!

  • @gautamtyagi8846
    @gautamtyagi8846 3 ปีที่แล้ว

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

  • @mahesh_kndpl
    @mahesh_kndpl 4 ปีที่แล้ว

    The way you explain is so clear. Thanks man.

  • @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

  • @SunilKumar18
    @SunilKumar18 7 ปีที่แล้ว +9

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

  • @christmas_fox-marychristma2801
    @christmas_fox-marychristma2801 4 ปีที่แล้ว +3

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

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

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

  • @princekumarmaurya1763
    @princekumarmaurya1763 3 ปีที่แล้ว

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

  • @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 4 ปีที่แล้ว

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

  • @b.saisrinivas1636
    @b.saisrinivas1636 3 ปีที่แล้ว

    Best explanation that i have seen for this algo

  • @vaishnavia.n.312
    @vaishnavia.n.312 3 ปีที่แล้ว

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

  • @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

  • @AbhishekJain-pm2jn
    @AbhishekJain-pm2jn 3 ปีที่แล้ว +1

    Thank you sir for explaining in such a easy way 🙏

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

    You made things understand easier

  • @Mohitsingh-mk8vr
    @Mohitsingh-mk8vr 2 ปีที่แล้ว

    best explanation of kadane algo

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

  • @Piggybacking
    @Piggybacking 2 ปีที่แล้ว

    Thank you so much ! your explanation is so helpful.

  • @sanketkumar1576
    @sanketkumar1576 7 ปีที่แล้ว

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

  • @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

  • @SmartProgramming
    @SmartProgramming 6 ปีที่แล้ว

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

  • @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

  • @naveensharma5060
    @naveensharma5060 7 ปีที่แล้ว

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

  • @prudhviprasad6386
    @prudhviprasad6386 3 ปีที่แล้ว

    Thnks sir it was very detailed explanation

  • @rahul-patil
    @rahul-patil 6 ปีที่แล้ว +3

    The second if condition is the core of this algo.

  • @ravikishoretottaramudi1263
    @ravikishoretottaramudi1263 2 ปีที่แล้ว

    Very good explanation sir

  • @sailkargutkar1980
    @sailkargutkar1980 6 ปีที่แล้ว

    Best way to explain max sub array prob thanks

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

  • @aryangarg9072
    @aryangarg9072 4 ปีที่แล้ว

    Good explanation

  • @shivam_0002
    @shivam_0002 6 ปีที่แล้ว

    Great Explanation, make some more videos. Thanks

  • @prakashkumaran9767
    @prakashkumaran9767 5 ปีที่แล้ว

    Good work. Easy to learn. Thank you..

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

    thank you best explanation❤❤

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

  • @rajatmishra3572
    @rajatmishra3572 4 ปีที่แล้ว

    nice explanation!!

  • @Ankit13555
    @Ankit13555 7 ปีที่แล้ว

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

  • @somesbhowmick2082
    @somesbhowmick2082 5 ปีที่แล้ว

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

  • @anshubansal2008
    @anshubansal2008 6 ปีที่แล้ว

    Great Explanation.

  • @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?

  • @TanujMishra077
    @TanujMishra077 7 ปีที่แล้ว

    Great work Sir. Nice explanation.

  • @swapnil814
    @swapnil814 5 ปีที่แล้ว

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

  • @beholdpain
    @beholdpain 5 ปีที่แล้ว

    Nice, Very Detailed!

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

  • @shimpyasthana5561
    @shimpyasthana5561 5 ปีที่แล้ว

    Great work

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

  • @Muthuvlog104
    @Muthuvlog104 2 ปีที่แล้ว

    Good explanatiin

  • @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

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

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

  • @karthikd7460
    @karthikd7460 4 ปีที่แล้ว

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

  • @sagarsalunkhe6429
    @sagarsalunkhe6429 7 ปีที่แล้ว

    Thanks for explanation
    very well done

  • @DhananjayTyagi24
    @DhananjayTyagi24 5 ปีที่แล้ว

    Explained well!

  • @prateekkanujiya9775
    @prateekkanujiya9775 5 ปีที่แล้ว

    Awesome 👍

  • @mohit0001ish
    @mohit0001ish 6 ปีที่แล้ว

    Very Well Explained :)

  • @saurabhsharma8577
    @saurabhsharma8577 6 ปีที่แล้ว

    Nice Work, Thank you Sir

  • @dharnisingh11
    @dharnisingh11 4 ปีที่แล้ว

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

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

  • @muhammahanisuzzaman5493
    @muhammahanisuzzaman5493 4 ปีที่แล้ว

    Carry On...

  • @rajporu9
    @rajporu9 7 ปีที่แล้ว

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

  • @tirnasircar2938
    @tirnasircar2938 4 ปีที่แล้ว

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

  • @argharoy6571
    @argharoy6571 4 ปีที่แล้ว

    Sir you are awesome

  • @jakusam4564
    @jakusam4564 6 ปีที่แล้ว

    sir thank you very much.i am from bangladesh.

  • @mordiabukarat3985
    @mordiabukarat3985 6 ปีที่แล้ว

    very helpful , thank you

  • @alokkumarsingh4118
    @alokkumarsingh4118 4 ปีที่แล้ว

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

  • @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?

  • @baibhavghimire3827
    @baibhavghimire3827 6 ปีที่แล้ว

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

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

    thank you

  • @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;

  • @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!

  • @brijbhushanawasthi7679
    @brijbhushanawasthi7679 7 ปีที่แล้ว +54

    Set the speed to 1.5, Thank me later:)

  • @ASHISHSINGH-nj6es
    @ASHISHSINGH-nj6es 5 ปีที่แล้ว +6

    Algorithm tracing != Explaining

  • @shankysays
    @shankysays 3 ปีที่แล้ว

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

  • @shivamvyas8899
    @shivamvyas8899 4 ปีที่แล้ว

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

  • @yunuskocatas3879
    @yunuskocatas3879 2 ปีที่แล้ว

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

  • @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

  • @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 5 ปีที่แล้ว +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

  • @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 ?

  • @Sudhanshusable98
    @Sudhanshusable98 4 ปีที่แล้ว

    Thank you sir 🙏

  • @MrVazanth
    @MrVazanth 7 ปีที่แล้ว

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

  • @Bakepichai
    @Bakepichai 7 ปีที่แล้ว

    Keep it up

  • @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

  • @superchillh3o
    @superchillh3o 7 ปีที่แล้ว

    excellent explanation, thank you sir

  • @arbindsharma1423
    @arbindsharma1423 3 ปีที่แล้ว

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

  • @yunuskocatas3879
    @yunuskocatas3879 2 ปีที่แล้ว

    perfect explenentation

  • @ayonkar1534
    @ayonkar1534 7 ปีที่แล้ว

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

  • @Tenacioustarantula
    @Tenacioustarantula 7 ปีที่แล้ว

    Thumps up to video

  • @Hampirathna
    @Hampirathna 4 ปีที่แล้ว

    Sir plz explain dijkstras algorithm with snippet like this sir

  • @karanshah9310
    @karanshah9310 4 ปีที่แล้ว

    Longest Palindrome in a string

  • @josephmorales652
    @josephmorales652 7 ปีที่แล้ว

    Thanks man!

  • @srinidhiii
    @srinidhiii 7 ปีที่แล้ว

    awesome

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

    • @manishgurawalia7625
      @manishgurawalia7625 4 ปีที่แล้ว

      No it will not fail here, will give 5 as the the max sum

  • @adithyareddy7611
    @adithyareddy7611 7 ปีที่แล้ว

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

  • @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

  • @sivas8620
    @sivas8620 7 ปีที่แล้ว

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

  • @mohamedanwar6073
    @mohamedanwar6073 7 ปีที่แล้ว

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

  • @mahal9647
    @mahal9647 6 ปีที่แล้ว

    Thanks Vivek