python中的ans是什么意思_python ans
從第1行開始。繼續前進,直到第一個1。然后跳至第2行,但仍留在同一列中,重復右移的過程,直到您點擊為止1。重復執行此操作。您上一步右移的行就是您的答案。
這是一個O(N + M)解(對于NxM矩陣,或者對于正方形NxN矩陣為O(N),如問題所示)。
使用您的示例:
0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 該.是在這里代表走過的路徑:
. . 1 1 0 . . . 0 0 0 . . Last right step, therefore this is our answer 1 1 1 1 . 該解決方案適用于非正方形矩陣,對于NxM矩陣保留最壞情況下的O(N + M)效率。
為什么這樣做?保證數字將被排序意味著每行將是一系列0,然后是一系列1。因此,一行的大小等于您在擊中1之前可以走的最遠距離。因此,如果一行只要跟隨0就能使您走得更遠,那么它必須比我們之前處理的任何內容都要長。
Python代碼:
li = [[0, 1, 1, 1], [0, 0, 0, 1], [0, 0, 0, 0], [1, 1, 1, 1]]
ans, j = 0, 0 for i, row in enumerate(li): while j < len(row) and row[j] == 0: j += 1 ans = i
print "Row", ans+1, "".join(map(str, li[ans])) 由于始終具有正方形NxN矩陣和不同的行,因此存在一個更簡單的解決方案。它們在一起意味著值最低的行將為0 0 ... 0 1或0 0 ... 0 0。這是因為矩陣中代表N + 1個可能的數字中的N個,因此“缺失”數字要么為0(在這種情況下,表示的最小值為1),要么為其他數值(最小值為0)。
掌握了這些知識之后,我們從右邊第二列開始檢查是否為0。找到一個時,我們向右看,如果包含另一個0,我們得到答案(只能有一行以a結尾0)。否則,我們將繼續在該列中搜索另一個0。如果找不到另一個0,則找到的第一個是我們要查找的行(只能有一個以結尾結尾的行01,因為沒有一個結尾為00,這是最小的)。
Python代碼:
li = [[0, 1, 1, 1], [0, 0, 0, 1], [0, 0, 0, 0], [1, 1, 1, 1]]
for i, row in enumerate(li): if row[-2] == 0: ans = i if row[-1] == 0: break
print "Row", ans+1, "".join(map(str, li[ans])) 該解決方案可以最輕松地回答O(N)的問題,但是將其推廣到處理非平方NxM矩陣或非唯一數字將使其最壞情況的效率為O(N ^ 2)。我個人更喜歡第一個解決方案。
總結
以上是生活随笔為你收集整理的python中的ans是什么意思_python ans的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 难度大!Apple Watch无创血糖监
- 下一篇: vivo X Fold2跑分曝光!安兔兔