>백엔드 개발 >파이썬 튜토리얼 >The Weekly Challenge의 작업 중첩 배열에 대한 내 Python 언어 솔루션

The Weekly Challenge의 작업 중첩 배열에 대한 내 Python 언어 솔루션

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-28 11:59:10783검색

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

1. 소개

Mohammad S. Anwar가 주최한 주간 챌린지는 개발자들이 두 가지 과제를 해결하여 경쟁하는 우호적인 경쟁입니다. 학습, 공유, 즐거움을 통해 모든 언어와 수준의 개발자의 참여를 장려합니다.

작업 2: 주간 챌린지 300의 중첩 배열은 개발자에게 가장 긴 중첩 배열 길이를 찾도록 유도합니다.

주간 챌린지 300 마감일은 2024년 12월 23일 일요일 23:59(영국 시간)입니다. 편견을 피하려면 대회 후에 이 게시물을 읽어보시기 바랍니다.

2. 작업 2: 중첩 배열

[0, n-1] 범위의 숫자 순열을 포함하는 길이 n의 @ints 정수 배열이 제공됩니다.

다음 규칙에 따라 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]에서 중복 요소가 발생하기 직전에 추가를 중지합니다.

집합 집합[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

build_set_from_index는 int 및 Starting_index 매개변수로 구성된 set[starting_index]를 반환합니다. 나는 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[]의 값과 같습니다.

예제 1에서와 같이 패러프레이징된 접근 방식을 사용하여 @ints에서 set[0]을 대화형으로 구성하는 것이 훨씬 더 간단해졌습니다!

  • 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

return_longest_length는 int로 구성된 모든 set[]의 최대 길이를 찾습니다. build_set_from_index를 활용하여 각 0

4. 결론

이 게시물에서는 작업 1: 중첩 배열에 대해 논의하고 솔루션을 제시했습니다. 내 솔루션은 간단하고 원래 작업을 어떻게 해석했는지에 따라 크게 정보를 얻었으며 좋은 아침 식사의 중요성을 강조합니다.

위 내용은 The Weekly Challenge의 작업 중첩 배열에 대한 내 Python 언어 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.