首頁 > 後端開發 > Python教學 > 我的 Python 語言解決方案來自《每週挑戰》中的任務嵌套數組

我的 Python 語言解決方案來自《每週挑戰》中的任務嵌套數組

Mary-Kate Olsen
發布: 2024-12-28 11:59:10
原創
760 人瀏覽過

My Python Language Solution to Task Nested Array from The Weekly Challenge

一、簡介

每週挑戰賽由 Mohammad S. Anwar 組織,是一場友好的競賽,開發者透過解決兩個任務進行競爭。它鼓勵所有語言和級別的開發者透過學習、分享和娛樂來參與。

每週挑戰 300 中的任務 2:嵌套陣列提示開發人員找到最長的巢狀陣列長度。

每週挑戰 300 截止日期為 2024 年 12 月 23 日星期日 23:59(英國時間)。為了避免偏見,請考慮在比賽後閱讀這篇文章。

2.任務2:嵌套數組

給定一個整數數組,@ints 長度為 n,包含 [0, n-1] 範圍內的數字排列。

寫一個腳本來建立一個集合,set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... 遵循以下規則:

  1. set[i] 中的第一個元素以元素 ints[i] 的選擇開始。
  2. set[i] 中的下一個元素應該是 ints[ints[i]],然後是 ints[ints[ints[i]]],依此類推。
  3. 我們在 set[i] 中出現重複元素之前停止加入。

傳回集合set[i]的最長長度。

每週挑戰 300,任務 2:巢狀陣列

範例 1 和範例 2 給出了給定輸入的預期輸出。

實施例1

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}
登入後複製

實施例2

Input: @ints = (0, 1, 2)
Output: 1
登入後複製

3.我的解決方案

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 後,我更好地理解了這些規則。我還能夠制定以下解釋。

  • set[i] 是一個包含 k 個元素的集合。
    • 規則 3 限制了 k 的值。
    • 規則 3 規定何時停止在 set[i] 中加入元素。
  • k = 0 時 set[i] 的值等於 ints[i]。
  • 對於 k > 0,set[i] 的第 k 個元素等於使用 set[i] 的第 (k-1) 個元素索引的 ints[] 的值。

使用釋義方法,從 @ints 互動建構 set[0],如範例 1 所示,變得更加簡單!

  • 當 k = 0 時,set[0] 的值等於 ints[0] = 5。 set[0] 包含 {5}。
  • 當 k = 1 時,set[0] 的值等於 ints[5] = 6。 set[0] 包含 {5, 6}。
  • 當 k = 2 時,set[0] 的值等於 ints[6] = 2。 set[0] 包含 {5, 6, 2}。
  • 當 k = 3 時,set[0] 的值等於 ints[2] = 0。 set[0] 包含 {5, 6, 2, 0}
  • 當 k = 4 時,停止,因為 set[0] 包含 ints[0] = 2。

返回最長長度

return_longest_length 找出所有由 int 建構的 set[] 的最大長度。它利用 build_set_from_index 為每個 0

4. 結論

在這篇文章中,我討論了任務 1:巢狀數組,並提出了我的解決方案。我的解決方案很簡單,很大程度上是根據我如何解釋原始任務得出的,並強調了一頓豐盛早餐的重要性。

以上是我的 Python 語言解決方案來自《每週挑戰》中的任務嵌套數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板