왼쪽 숫자에서 오른쪽 숫자의 최대 차이를 줄여주세요. - 동적 기획.

966 단어 nullNumbers
제목: 수조에서 숫자를 오른쪽의 숫자를 빼면 숫자의 차이를 얻는다.모든 수대 지차의 최대치를 구하다.예를 들어 수조 {2,4,1,16,7,5,11,9}에서 수대 차이의 최대치는 11이고 16에서 5를 뺀 결과이다.
동적 기획
변수: i는 그룹 인덱스이고 max는 i 이전의 최대치(i 포함하지 않음)이며 maxdiff는 i 이전의 수에서 i가 얻은 최대치를 감소합니다.
설명:
i일 때 maxdiff=max-data[i], 즉 i 이전의 최대 수에서 데이터[i]를 뺀다.
i+1 시 i+1 이전의 최대치는max 또는 데이터[i]이며, 최대치를 찾은 후 데이터[i+1]를 빼면 i+1의 최대치를 줄일 수 있습니다.
1시에 max=data[0], maxdiff=max-data[1].
int MaxDiff_Solution3(int numbers[], unsigned length)
{
    if(numbers == NULL && length < 2)
        return 0;
 
    int max = numbers[0];
    int maxDiff =  max - numbers[1];
 
    for(int i = 2; i < length; ++i)
    {
        if(numbers[i - 1] > max)
            max = numbers[i - 1];
 
        int currentDiff = max - numbers[i];
        if(currentDiff > maxDiff)
            maxDiff = currentDiff;
    }
 
    return maxDiff;
}

참조:http://zhedahht.blog.163.com/blog/static/2541117420116135376632/

좋은 웹페이지 즐겨찾기