首頁 >後端開發 >Python教學 >用 Python 解決每週挑戰任務 1 和 0

用 Python 解決每週挑戰任務 1 和 0

Patricia Arquette
Patricia Arquette原創
2025-01-03 13:36:40834瀏覽

Solving the Weekly Challenge  Task Ones and Zeroes in Python

一、簡介

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

每週挑戰中的任務 1:1 和 0 要求開發人員找出最多包含 x 0 和 y 1 的最大子集。

在這篇文章中,我討論並展示了我的 Python 語言解決方案,任務 1:1 和 0,並總結了一個簡短的結論。

2. 任務 1:1 和 0

您將獲得一個二進位字串陣列 @str 和兩個整數 $x 和 $y。

寫一個腳本來傳回 @str 的最大子集的大小,使得子集中最多有 $x 0 和 $y 1。

如果 m 的所有元素也是 n 的元素,則集合 m 是 n 的子集。

每週挑戰 302,任務 1:一、零

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

實施例1

Input: @str = ("10", "0001", "111001", "1", "0")
       $x = 5
       $y = 3
Output: 4

最多包含 5 個 0 和 3 個 1 的最大子集:("10", "0001", "1", "0")。

實施例2

Input: @str = ("10", "1", "0")
       $x = 1
       $y = 1
Output: 2

最多包含 1 個 0 和 1 個 1 的最大子集:("1", "0")。

3.我對任務1的解決方案

from itertools import combinations

def return_subset(strs: list[list], x: int, y: int) -> int | None:
    for r in range(len(strs) - 1, 1, -1):
        subsets = combinations(strs, r)
        for subset in subsets:
            total_zeros = 0
            total_ones = 0
            for element in subset:
                total_zeros += element.count('0')
                total_ones += element.count('1')
            if total_zeros <= x and total_ones <= y:
                return len(subset)
    return None

我的解決方案使用 itertools.combinations、for 迴圈和 if 語句來尋找與任務要求相符的子集:

  • 我使用組合函數產生長度為 r 的所有 str 子集。我從最大子集長度 r = len(strs) - 1 開始,然後遞減到最小子集長度 r = 1。
  • 對於長度 r 的每個子集
    • 我計算子集中零的總數 (total_zeros)。
    • 我計算子集中的總數 (total_ones)。
    • 如果子集符合所需條件(total_zeros
  • 如果沒有 str 的子集,那麼我回傳 None。

4. 結論

在這篇文章中,我討論了任務 1:1 和 0,並提出了該任務的解決方案。

在每週挑戰網站上了解有關最新和過去挑戰的更多資訊:
https://theweeklychallenge.org/

了解更多有關參加每週挑戰常見問題的資訊:
https://theweeklychallenge.org/faq/

以上是用 Python 解決每週挑戰任務 1 和 0的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn