Leetcode 53. Maximum Subarray

來源:互聯網
上載者:User

標籤:

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [−2,1,−3,4,−1,2,1,−5,4],
the contiguous subarray [4,−1,2,1] has the largest sum = 6.

click to show more practice.

More practice:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

[Solution]dynamic programming:let local_suffix[0...i....n] represet max subarray contains the ith number in A[],
if (local_suffix[i - 1] <= 0)  local_suffix[i] = A[i - 1];else  local_suffix[i] = local_suffix[i - 1] + A[i - 1];
 1 int maxSubArray(int A[], int n)  2     { 3         if (n <= 0) 4             return -1; 5         int global_suffix = INT_MIN, *local_suffix = new int[n + 1]; 6          7         local_suffix[0] = 0; 8         for (int i = 1; i <= n; i++) 9         {10             if (local_suffix[i - 1] <= 0)11                 local_suffix[i] = A[i - 1];12             else13                 local_suffix[i] = local_suffix[i - 1] + A[i - 1];14             15             if (global_suffix < local_suffix[i])16                 global_suffix = local_suffix[i];17         }18         19         delete[] local_suffix;20         return global_suffix;21     }

 However, this uses O(n) memory. We can use just local_suffix instead.

 1     int maxSubArray(int A[], int n)  2     { 3         if (n <= 0) 4             return -1; 5         int global_suffix = INT_MIN, local_suffix; 6          7         for (int i = 0; i < n; i++) 8         { 9             if (local_suffix <= 0)10                 local_suffix = A[i];11             else12                 local_suffix = local_suffix + A[i];13             14             if (global_suffix < local_suffix)15                 global_suffix = local_suffix;16         }17         18         return global_suffix;19     }

 

Leetcode 53. Maximum Subarray

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.