검 지 Offer - (30) 연속 서브 배열 의 최대 합

제목 설명:
HZ 는 가끔 전문 적 인 문 제 를 가지 고 컴퓨터 학과 가 아 닌 친구 들 을 속인다.오늘 테스트 팀 이 회 의 를 마 친 후에 그 는 또 말 했다. 오래된 1 차원 모델 인식 에서 연속 적 인 서브 벡터 의 최대 와 벡터 가 모두 양수 일 때 문 제 는 잘 해결 된다.그러나 벡터 에 마이너스 가 포함 되 어 있다 면 어떤 음 수 를 포함해 야 하 며 옆 에 있 는 정수 가 보완 되 기 를 기대 해 야 하 는가?예 를 들 어 {6, - 3, - 2, 7, - 15, 1, 2, 2}, 연속 자 벡터 의 최대 합 은 8 (0 번 부터 3 번 까지) 이다.너 는 그 에 게 속 는 것 이 아니 냐?(하위 벡터 의 길 이 는 적어도 1)
다음 과 같이 구현:
//                    
//1.   array[i] ,  CurrentSum   ,    :
//(1)  array[i], CurrentSum   array[i]   ,           , array[i]         
//(2)   array[i]       , CurrentSum += array[i]
//2.       CurrentSum        GreatestSum   , GreatestSum    
//    arrry    
class Solution 
{
public:
    int FindGreatestSumOfSubArray(vector<int> array) 
    {
        if (array.size() == 0) return 0;//     

        int CurrentSum = 0;//       
        int GreatestSum = 0x80000000;//       ,  GreatestSum      ,       int      
        for (int i = 0; i < array.size(); ++i)
        {
            if (CurrentSum < 0)  CurrentSum     ,  array[i]         
                CurrentSum = array[i];
            else//   array[i]      
                CurrentSum += array[i];
            if (GreatestSum < CurrentSum)//  GreatestSum
                GreatestSum = CurrentSum;
        }
        return GreatestSum;
    }
};

좋은 웹페이지 즐겨찾기