Mohammad S. Anwar가 주최한 주간 챌린지는 개발자들이 두 가지 과제를 해결하여 경쟁하는 우호적인 경쟁입니다. 학습, 공유, 즐거움을 통해 모든 언어와 수준의 개발자의 참여를 장려합니다.
작업 2: 주간 챌린지 300의 중첩 배열은 개발자에게 가장 긴 중첩 배열 길이를 찾도록 유도합니다.
주간 챌린지 300 마감일은 2024년 12월 23일 일요일 23:59(영국 시간)입니다. 편견을 피하려면 대회 후에 이 게시물을 읽어보시기 바랍니다.
[0, n-1] 범위의 숫자 순열을 포함하는 길이 n의 @ints 정수 배열이 제공됩니다.
다음 규칙에 따라 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]에서 중복 요소가 발생하기 직전에 추가를 중지합니다.
집합 집합[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는 int 및 Starting_index 매개변수로 구성된 set[starting_index]를 반환합니다. 나는 set[]을 구성하기 위해 반복적인 접근 방식을 사용했습니다.
나의 접근 방식은 이른 아침과 나중에 집합[] 구성 규칙을 바꾸어 표현한 것에서 나타났습니다. 처음에는 이러한 규칙이 복잡해 보였습니다. 그러나 적당한 아침 식사와 카페인을 섭취한 후 예제 1을 다시 검토한 후 이러한 규칙을 더 잘 이해했습니다. 나는 또한 다음과 같은 의역을 공식화할 수 있었습니다.
예제 1에서와 같이 패러프레이징된 접근 방식을 사용하여 @ints에서 set[0]을 대화형으로 구성하는 것이 훨씬 더 간단해졌습니다!
return_longest_length는 int로 구성된 모든 set[]의 최대 길이를 찾습니다. build_set_from_index를 활용하여 각 0
이 게시물에서는 작업 1: 중첩 배열에 대해 논의하고 솔루션을 제시했습니다. 내 솔루션은 간단하고 원래 작업을 어떻게 해석했는지에 따라 크게 정보를 얻었으며 좋은 아침 식사의 중요성을 강조합니다.
위 내용은 The Weekly Challenge의 작업 중첩 배열에 대한 내 Python 언어 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!