男女合計でleetcode548スプリットアレイ

アイデア:

複雑さを軽減するために、ハッシュテーブルを使用します。具体的に:

列挙J:

    列挙I、I - 1]和場合==和[J - 1] - 和[i]は、合計するハッシュテーブルを使用する[I - 1]が記録されています。

    列挙kは、和[K - 1] - 場合和[J] ==和[N - 1] - 和[k]とハッシュテーブルは和[Kを - 1] - 存在和[j]が、真を返します。

falseを返します。

実装:

1  クラスソリューション
 2  {
 3  公共4      ブール splitArray(ベクトル< INT >&NUMS)
 5      {
 6          INT N = nums.size()。
7          場合(N < 7を返す 8          ベクトル< 整数 >和(N、0 );
9          和[ 0 ] = NUMS [ 0 ]。
10          のためにint型 I = 1 -和[I] =和[I; iがN <I ++)は1] + NUMS [I]。
11          のためにINT J = 3 - ; J <= N 4 ; J ++ 12          {
 13              unordered_set < INT > ST。
14              のためには、int型 i = 1 ; iはJ < - 1 ; iは++ 15              {
 16                  であれば(SUM [I - 1 ] ==和[J - 1 ] -和[i])とst.insert(SUM [I - 1 ]);
17              }
 18              のためにINT K = j個の+2 ; K <= N - 2K ++ 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