알고리즘 학습 - leetcode 659. 분할 배열 은 연속 서브 시퀀스 입 니 다.
1851 단어 알고리즘
예시 1:
: [1,2,3,3,4,5]
: True
:
:
1, 2, 3
3, 4, 5
예시 2:
: [1,2,3,3,4,4,5,5]
: True
:
:
1, 2, 3, 4, 5
3, 4, 5
예시 3:
: [1,2,3,4,4,5]
: False
알림:
문제 풀이 방향:
맵 두 개 사용 하기 left 와 need
left [i] 메모리 i 가 nums 배열 에 나타 난 횟수
need [i] 에 따 르 면 앞의 것 은 연속 적 인 세 개의 정수 서열 을 구성 했다. 예 를 들 어 [1, 2, 3] 로 구 성 된 후에 need [4] 에 하 나 를 더 하고 4 가 있 으 면 need [5] 에 하 나 를 더 하 는 것 이다.
class Solution {
public:
bool isPossible(vector& nums) {
map left,need;
for(int num:nums){ // ,
left[num]++;
}
for(int num:nums){ // , , left 0( )
if(left[num]==0) //
continue;
else if(need[num]>0){ // ,
need[num]--;
need[num+1]++;
}
else if((left[num+1]>0)&&(left[num+2]>0)){ //
left[num+1]--;
left[num+2]--;
need[num+3]++;
}
else // , false
return false;
left[num]--;
}
return true;
}
};
참고:
https://blog.csdn.net/JackZhang_123 / article / details / 78866342 (알고리즘 사상)
https://blog.csdn.net/u011806486/article/details/79827739(map 의 사용)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.