如何求最大子陣列之和

2021-10-07 02:40:26 字數 993 閱讀 1165

問題概述:

有乙個長度為n的陣列,這n個元素可以使正數也可以是負數,陣列中連續的乙個或多個元素可以組成乙個連續的子陣列,乙個陣列可以有多個這樣連續的子陣列,求子陣列各個元素和的最大值。

找出所有子陣列元素,進行求和,然後找到和的最大值

public static int findsecond(int arr)}}

return maxsum;

}

當然我們期望的並不是通過蠻力法解出,面試官也不太會對你認可

上面的求解時間複雜度十分不理想,可以使用動態規劃的方法來降低求解的時間複雜度。

首先可以根據陣列的最後乙個元素arr[n-1]與最大子陣列的關係分為以下三種情況進行討論

(1)最大子陣列包含arr[n-1],即以arr[n-1]結尾。

(2)最大子陣列單獨構成最大子陣列。

(3)最大子陣列不包含arr[n-1],那麼求arr[1,…,n-1]的最大子陣列可以轉換成求arr[1,…,n-2]的最大子陣列。

通過上面的分析我們可以知道,

public static

intmaxsubarr

(int

arr)

return nall;

}

**編寫:

private

static

int begin =0;

private

static

int end =0;

public

static

intmaxsubarray

(int

arr)

else

if(nsum > maxsum)

}return maxsum;

}

求最大子陣列之和

在乙個有n個元素的陣列中,其中每個元素的值可正可負,在該陣列中求乙個連續子陣列,使得該陣列的和最大 拿到這個題首先想到的是暴力法,即暴力迴圈求所有陣列的和,因此可以求的該陣列的最大值,其時間複雜度為o n 3 時間複雜度較高,我們可以用分治法和動態規劃來做這道題。其中分治法時間複雜度為o n log...

如何求出最大子陣列之和

問題描述 乙個有n個元素的陣列,元素中有正有負,陣列中乙個或者連續多個元素可以組成乙個子陣列,求子陣列中和最大的?方法一 暴力法三層迴圈,找出所有的子陣列,並求出他們對應的和,再取最大值。如下 package array public class maxsubarray return maxsum ...

求最大子串行之和

摘要 給出乙個序列,求出其中連續的子串行中和最大的乙個。如 1 3 5 2 1 4 5 最大子串行之和是2 1 4 5 基本思路 最簡單的辦法就是遍歷一邊序列,用變數thissum記錄遍歷過的元素之和,當thisum 0時,繼續相加.若thisum 0,令thisum 0,吧下乙個元素作為新的子串行...