평등 합계와 leetcode548 분할 어레이

아이디어 :

복잡성을 줄이기 위해 해시 테이블을 사용합니다. 특히 :

열거 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 }

 

추천

출처www.cnblogs.com/wangyiming/p/11300681.html