소 손님 - 미끄럼 창의 최대 값

6163 단어 알고리즘 2 솔
제목 설명 은 배열 과 미끄럼 창의 크기 를 지정 하고 모든 미끄럼 창의 최대 값 을 찾 습 니 다.예 를 들 어 배열 {2, 3, 4, 2, 6, 2, 5, 1} 과 미끄럼 창의 크기 3 을 입력 하면 모두 6 개의 미끄럼 창 이 존재 합 니 다. 그들의 최대 치 는 각각 {4, 4, 6, 6, 5} 입 니 다.수조 {2, 3, 4, 2, 6, 2, 5, 1} 의 슬라이딩 창 은 다음 과 같은 6 개가 있다.문제 풀이: 1, 두 개의 vector 배열 을 정의 합 니 다. array 는 창 이 미 끄 러 질 때마다 size 요 소 를 저장 하고 maxnum 은 최대 치 2 를 저장 합 니 다. * max 를 통 해element (array. begin (), array. end ()) 를 통 해 최대 값 3 을 가 져 옵 니 다. vector:: iterator idx = array. begin ();array.erase(idx);배열 헤더 요소 삭제
class Solution {
public:
    vector<int> maxInWindows(const vector<int>& num, unsigned int size)
    {
        vector<int> maxnum;//     
        vector<int> array;//            
        unsigned int length = num.size();// num     
        unsigned int k = 0;//    num   
        
        if (size>length || size<1)
            return maxnum;
        
        while (k < size-1)
            array.push_back(num[k++]);
        
        for (int i=0; i<length-size+1; i++)
        {
            array.push_back(num[k++]);
            maxnum.push_back(*max_element(array.begin(), array.end()));//             
            vector<int>::iterator idx = array.begin();
            array.erase(idx);//  array     
        }
        return maxnum;
    }
};

좋은 웹페이지 즐겨찾기