在二進位制陣列中查詢需要替換為 1 的 0 的索引,以獲得最長的連續 1 序列 - Python篇(續集)
假設我們有一個二進位制陣列。我們必須找到可以替換為 1 的 0 的位置,以獲得最大數量的連續 1 序列。
因此,如果輸入類似於 [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1],則輸出將為 10,因此陣列將變為 [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1]。
為了解決這個問題,我們將遵循以下步驟:
i := 0,
n := A 的大小
count_left := 0, count_right := 0
max_i := -1, last_i := -1
count_max := 0
當 i < n 時,執行:
如果 A[i] 等於 1,則
count_right := count_right + 1
否則,
如果 last_i 不等於 -1,則
如果 count_right + count_left + 1 > count_max,則
count_max := count_left + count_right + 1
max_i := last_i
last_i := i
count_left := count_right
count_right := 0
i := i + 1
如果 last_i 不等於 -1,則
如果 count_left + count_right + 1 > count_max,則
count_max := count_left + count_right + 1
max_i := last_i
返回 max_i
示例
讓我們看看下面的實現以更好地理解:
def find_max_one_index(A): i = 0 n = len(A) count_left = 0 count_right = 0 max_i = -1 last_i = -1 count_max = 0 while i < n: if A[i] == 1: count_right += 1 else: if last_i != -1: if count_right + count_left + 1 > count_max: count_max = count_left + count_right + 1 max_i = last_i last_i = i count_left = count_right count_right = 0 i += 1 if last_i != -1: if count_left + count_right + 1 > count_max: count_max = count_left + count_right + 1 max_i = last_i return max_i A = [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1] print(find_max_one_index(A))
輸入
[1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1]
輸出
10
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP