42 연속 부분 배열 및 최대 얼굴 질문

정수 배열을 입력 배열은 양뿐만 아니라 부정적인있다. 하나 이상의 서브 어레이로 이루어지는 이상의 연속하는 정수 배열. 모든 하위 배열의 최대를 추구합니다.

소요 시간 복잡도는 O (n)이된다.

 

예 1 :

입력 : nums = [-2,1, 설 포닐, -1,2,1, -5,4]
출력 : 6
명 : 연속 서브 어레이 [4, -1,2,1]를 가장 6.

 

팁 :

. (1) <= arr.length <= 10 ^ 5
-100 <= ARR [I] <= 100
주 : 본 동일한 문제 제목 (53) 및 마스터 역 HTTPS : //leetcode-cn.com/problems/maximum-subarray/

문제 해결 아이디어 (동적 프로그래밍) :

최대 : 최대 값과 서브 어레이의 첫 번째 요소 합계의 초기 값 : 현재의 서브 - 어레이의 첫 번째 요소의 초기 값.

배열을, 합계의 전류 값이 결정되며, 0보다 작은 경우, 다시 처음부터 누적 된 현재 요소, 및 최대 값을 갱신하는 경우

코드 구현 :

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int len=nums.size();
        int max=nums[0];
        int sum=max;
        for(int i=1;i<len;++i){
            if(sum<0){
                sum=0;
            }
            sum+=nums[i];
            if(max<sum){
                max=sum;
            }
        }
        return max;
    }
};

 

게시 된 253 개 원래 기사 · 원 찬양 15 ·은 30000 +를 볼

추천

출처blog.csdn.net/junjunjiao0911/article/details/104748692