件名の説明:
その最大戻るを有する(サブアレイが最小要素を含む)NUMSに整数の配列を与えられ、そして連続するサブ配列の最大値を見つけます。
例:
入力:[-2,1、-3,4、-1,2,1、-5,4]、
出力:6
説明:連続サブアレイ[4、-1,2,1]であり、最大値は6でした。
問題解決のアイデア:
動的再発は:徐々に解決使用できる溶液<0は前のステップが破棄される場合、溶液の各ステップの終了位置の連続的な配列で、合計は、実際、この段階で比較すると、先のステップの溶液に記録されています。最後のステップは、このソリューションを取得するには、ステップ・ソリューションを比較する前に、最大値tmpが、現在の最適解を保存します。
コード:
class Solution {
public int maxSubArray(int[] nums) {
int tmp = nums[0];
int sum = 0;
for (int num : nums) {
sum = sum > 0 ? sum + num : num;
if (tmp <= sum) {
tmp = sum;
}
}
return tmp;
}
}