★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
]➤[マイクロチャネルパブリック番号(WeiGanTechnologies)をあえてします
➤ブログパークアドレス:サンチンウィングチー(https://www.cnblogs.com/strengthen/)
➤GitHubアドレス:https://github.com/strengthen/LeetCode
元のアドレス➤:HTTPS://www.cnblogs。 COM /強化/ P / 11333857.html
アドレスがリンクブログパーク龍シャンカイはない場合➤、それは記事の著者をクロールすることができます。
➤テキストは、更新を変更されました!元のアドレスが読むことを強く推奨クリック!サポート作者!オリジナルをサポートしています!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
バイナリ配列を指定し data
、グループのすべてのに必要なスワップの最小数を返す 1
配列内の任意の場所で一緒にアレイ内の存在します。
例1:
入力:[1,0,1,0,1]
出力:1
説明:
:グループのすべての1の一緒に3通りの方法があります
[1,1,1,0,0] 1つのスワップを使用しては。
2つのスワップを使用して、[0,1,1,1,0]。
1つのスワップを使用して、[0,0,1,1,1]。
最小値は1です。
例2:
入力:[0,0,0,1,0]
出力:0
説明:
つのみ1アレイであるので、何スワップが必要とされません。
例3:
入力:[1,0,1,0,1,0,0,1,1,0,1]
出力:3
説明:
3つのスワップを使用して一つの可能な解決策がある[0,0,0,0,0,1 、1,1,1,1,1]。
注意:
1 <= data.length <= 10^5
0 <= data[i] <= 1
バイナリ配列を指定している data
、あなたは一緒に構図上の任意の位置での配列の位置を交換し、すべての可能な所望の最小スイッチング周波数を返却する必要があります。
例1:
入力:[1,0,1,0,1] 出力:1 説明: 一緒に1のすべての組み合わせを配置する3つの方法があります: [1,1,1,0,0]、交換機1は、 [0 、1,1,1,0]、交換機2、 [0,0,1,1,1]、交換1回。 だから、交換の最小数は1です。
例2:
入力:[0,0,0,1,0] 出力:0 説明: 唯一つのアレイ1は、交換する必要がありません。
例3:
入力:[1,0,1,0,1,0,0,1,1,0,1] 出力:3 説明: 交流3、唯一の可能な解決策は、[0で3回交換されます0,0,0,0,1,1,1,1,1,1]。
ヒント:
1 <= data.length <= 10^5
0 <= data[i] <= 1
820ミリ秒
1 クラスソリューション{ 2 FUNC minSwaps(_データ:[INT]) - > のInt { 3 LETのN:のInt = data.count 4 VAR S:[INT] = [INT](繰り返し:0、カウント:N + 1 ) 5 用 I で 1 ... N 6 { 7つの S [I] = sの[I- 1 ] +データ[I- 1 ] 8 } 9 のVaRのInt =:M S [N] 10 のvar RET:のInt = N 11 用 I でM ... N 12 { 13 K =分(右、M(P [i]を-s [I- M])) 14 } 15 リターンコート 16 } 17 }