每週挑戰賽由 Mohammad S. Anwar 組織,是一場友好的競賽,開發者透過解決兩個任務進行競爭。它鼓勵所有語言和級別的開發者透過學習、分享和娛樂來參與。
每週挑戰 300 中的任務 2:嵌套陣列提示開發人員找到最長的巢狀陣列長度。
每週挑戰 300 截止日期為 2024 年 12 月 23 日星期日 23:59(英國時間)。為了避免偏見,請考慮在比賽後閱讀這篇文章。
給定一個整數數組,@ints 長度為 n,包含 [0, n-1] 範圍內的數字排列。
寫一個腳本來建立一個集合,set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... 遵循以下規則:
- set[i] 中的第一個元素以元素 ints[i] 的選擇開始。
- set[i] 中的下一個元素應該是 ints[ints[i]],然後是 ints[ints[ints[i]]],依此類推。
- 我們在 set[i] 中出現重複元素之前停止加入。
傳回集合set[i]的最長長度。
每週挑戰 300,任務 2:巢狀陣列
範例 1 和範例 2 給出了給定輸入的預期輸出。
Input: @ints = (5, 4, 0, 3, 1, 6, 2) Output: 4
這裡設定了一個最長的集合[0]:
set[0] = {ints[0], ints[5], ints[6], ints[2]} = {5, 6, 2, 0}
Input: @ints = (0, 1, 2) Output: 1
def build_set_from_index(ints, starting_index): iset = [ ints[starting_index], ] for ints_index in range(1, len(ints)): pindex = iset[ints_index - 1] value = ints[pindex] if value in iset: break iset.append(value) return iset def return_longest_length(ints): max_length = 0 for i in range(0, len(ints)): iset = build_set_from_index(ints, i) iset_length = len(iset) if iset_length > max_length: max_length = iset_length return max_length
我的解決方案使用兩個函數 build_set_from_index 和 return_longest_length。
build_set_from_index 傳回根據參數ints 和starting_index 建構的set[starting_index]。我使用迭代方法來建構 set[]。
我的方法是從一個清晨開始的,以及隨後對 set[] 構造規則的釋義。最初,這些規則似乎很複雜。但是,在享用了一頓豐盛的早餐和咖啡因後重新查看示例 1 後,我更好地理解了這些規則。我還能夠制定以下解釋。
使用釋義方法,從 @ints 互動建構 set[0],如範例 1 所示,變得更加簡單!
return_longest_length 找出所有由 int 建構的 set[] 的最大長度。它利用 build_set_from_index 為每個 0
在這篇文章中,我討論了任務 1:巢狀數組,並提出了我的解決方案。我的解決方案很簡單,很大程度上是根據我如何解釋原始任務得出的,並強調了一頓豐盛早餐的重要性。
以上是我的 Python 語言解決方案來自《每週挑戰》中的任務嵌套數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!