아이디어 :
복잡성을 줄이기 위해 해시 테이블을 사용합니다. 특히 :
열거 J :
== 합 [J - 1] - - 합 [1 I] 만약 열거 나, 기록 인 - 합 [I]가, 해시 테이블을 사용하여, [1 I] 합하는
열거 K는 합계 [K - 1] - 만약 합 [J] == 합 [N - 1] - 합 [K] 해시 테이블 합 [케이 - 1] - 존재 합 [j]가 true를 반환.
false를 돌려줍니다.
구현 :
1 급 솔루션 2- { 3 공개 : 4 부울 splitArray (벡터 < INT > & nums) 5 { 6 INT N = nums.size (); 7 의 경우 (N < 7 ) 반환 거짓 ; 8 벡터 < INT > 합계 (N, 0 ); 9 합 [ 0 ] = nums [ 0 ]; (10) 에 대한이 ( 값 int = 1을 1 ; i가 N <; 내가 ++) 합계 [I] = 합계 [I - 1] + nums [I]; 11 대 ( INT의 J = 3 ; J <= N - (4) ] J ++ ) 12 { 13 unordered_set < INT > 과 같다 (14) 에 대한이 ( int로 I = 1 ; i가 J <- 1 ] 나가 ++ ) 15 { 16 일 경우 (합 [I - 1 ] == 합 [J - 1 ] - 합 [I]) st.insert (합 [I - 1 ]); 17 } 18 대 ( INT K = J +의2 ; K <N = - 2 ; K ++ ) 19 { 20 의 경우 (합 [K - 1 ] - 합 [J] == [N - 합계 1 ] - 합 [K] && st.count (합 [K - 1 ] - 합 [J])) (21) 반환 사실 ; 22 } 23 } 24 반환 거짓 ; 25 } 26 }