주제는 LeetCode에서
다른 솔루션 또는 소스 코드에 액세스 할 수 있습니다. tongji4m3
기술
정수 배열 nums가 주어지면 합계가 가장 큰 연속 하위 배열을 찾고 (하위 배열에 하나 이상의 요소가 포함됨) 가장 큰 합계를 반환합니다.
예:
输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
많은:
복잡도가 O (n) 인 솔루션을 구현 한 경우보다 정교한 분할 및 정복 솔루션을 사용해보십시오.
아이디어
왼쪽에서 오른쪽으로 이동합니다. 0보다 크면 유지하고 그렇지 않으면하지 않습니다. 결과는 매 순간 판단됩니다
세부 묘사
하위 배열에는 하나 이상의 요소가 포함되어 있으므로 초기화는 0 일 수 없지만 int의 최소값입니다.
암호
//子数组最少包含一个元素
public int maxSubArray(int[] nums)
{
int N = nums.length;
int result = Integer.MIN_VALUE,temp=0;//look,因为条件是至少包含
for (int i = 0; i < N; i++)
{
temp = temp > 0 ? temp + nums[i] : nums[i];
result = Math.max(result, temp);
}
return result;
}
복잡성 분석
시간 복잡성
O (N) O (N) O ( N )
공간 복잡성
O (1) O (1) O ( 1 )