Rumah > Artikel > pembangunan bahagian belakang > . Bilangan Minimum K Balikan Bit Berturut-turut
995. Bilangan Minimum K Balikan Bit Berturut-turut
Sukar
Anda diberi nombor tatasusunan binari dan integer k.
Selidikan k-bit sedang memilih subarray panjang k daripada nums dan pada masa yang sama menukar setiap 0 dalam subarray kepada 1, dan setiap 1 dalam subarray kepada 0.
Kembali bilangan minimum k-bit flip diperlukan supaya tiada 0 dalam tatasusunan. Jika tidak boleh, kembalikan -1.
Subarray ialah bahagian bersebelahan daripada tatasusunan.
Contoh 1:
Contoh 2:
Contoh 3:
Flip nums[0],nums[1],nums[2]: nums becomes [1,1,1,1,0,1,1,0] Flip nums[4],nums[5],nums[6]: nums becomes [1,1,1,1,1,0,0,0] Flip nums[5],nums[6],nums[7]: nums becomes [1,1,1,1,1,1,1,1]
Kekangan:
Penyelesaian:
class Solution { /** * @param Integer[] $nums * @param Integer $k * @return Integer */ function minKBitFlips($nums, $k) { $flipped = array_fill(0, count($nums), false); $validFlipsFromPastWindow = 0; $flipCount = 0; for ($i = 0; $i < count($nums); $i++) { if ($i >= $k) { if ($flipped[$i - $k]) { $validFlipsFromPastWindow--; } } if ($validFlipsFromPastWindow % 2 == $nums[$i]) { if ($i + $k > count($nums)) { return -1; } $validFlipsFromPastWindow++; $flipped[$i] = true; $flipCount++; } } return $flipCount; } }Pautan Kenalan
Atas ialah kandungan terperinci . Bilangan Minimum K Balikan Bit Berturut-turut. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!