시간 복잡도는 O(n)
배열을 한 번만 통과하면 됩니다. 하지만 이 배열의 본질적인 특성, 즉 동적 프로그래밍 방법을 깊이 이해해야 합니다.
먼저 thisSum과 maxSum이라는 두 개의 변수를 설정합니다. 그 중 thisSum은 현재 위치에 도달한 요소의 합을 나타내고, maxSum은 현재 위치에 도달한 연속된 하위 시퀀스의 최대 합을 나타냅니다.
참고: thisSum이 음수이면 직접 0으로 설정하고, thisSum이 maxSum보다 크면 maxSum을 thisSum 값으로 설정합니다.
public static int maxSubArray(int[] nums) { int length = nums.length; if(length <= 0) return 0; int CurSum = 0; int max = Integer.MIN_VALUE; for(int i = 0; i < length; i++) { if(CurSum <= 0) //当当前的和小于等于0,那么就给其置为当前元素的值 CurSum = nums[i]; else CurSum += nums[i]; if(CurSum > max) max = CurSum; } return max; }
추천 튜토리얼: PHP 튜토리얼
위 내용은 배열이 주어지면 배열에서 가장 큰 연속 부분 수열의 합을 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!