>백엔드 개발 >PHP 튜토리얼 >폭탄을 해체하세요

폭탄을 해체하세요

Barbara Streisand
Barbara Streisand원래의
2024-11-24 16:19:32468검색

Defuse the Bomb

1652. 폭탄을 해체하세요

난이도: 쉬움

주제: 어레이, 슬라이딩 윈도우

해체할 폭탄이 있는데 시간이 얼마 남지 않았습니다! 귀하의 제보자는 길이가 n이고 키가 k인 원형 배열 코드를 제공할 것입니다.

코드를 해독하려면 모든 숫자를 바꿔야 합니다. 모든 숫자는 동시에 대체됩니다.

  • K > 0, i번째 숫자를 다음k 숫자
  • 의 합으로 바꿉니다.
  • k < 0, i번째 숫자를 이전k개
  • 의 합으로 바꿉니다.
  • k == 0인 경우 i번째 숫자를 0으로 바꿉니다.

코드는 순환형이므로 코드[n-1]의 다음 요소는 코드[0]이고, 코드[0]의 이전 요소는 코드[n-1]입니다.

원형 배열 코드와 정수 키 k가 주어지면 폭탄을 해체하기 위한 해독된 코드를 반환하세요!

예 1:

  • 입력: 코드 = [5,7,1,4], k = 3
  • 출력: [12,10,16,13]
  • 설명: 각 숫자는 다음 3개 숫자의 합으로 대체됩니다. 해독된 코드는 [7 1 4, 1 4 5, 4 5 7, 5 7 1]입니다. 숫자가 줄바꿈되는 것을 확인하세요.

예 2:

  • 입력: 코드 = [1,2,3,4], k = 0
  • 출력: [0,0,0,0]
  • 설명: k가 0이면 숫자가 0으로 대체됩니다.

예 3:

  • 입력: 코드 = [2,4,9,3], k = -2
  • 출력: [12,5,6,13]
  • 설명: 해독된 코드는 [3 9, 2 3, 4 2, 9 4]입니다. 숫자가 다시 순환되는 것을 확인하세요. k가 음수이면 이전 숫자의 합이 됩니다.

제약조건:

  • n == 코드 길이
  • 1 <= n <= 100
  • 1 <= 코드[i] <= 100
  • -(n - 1) <= k <= n - 1

힌트:

  1. 배열이 원형이므로 모듈로를 사용하여 올바른 인덱스를 찾으세요.
  2. 무차별 솔루션을 적용할 수 있을 만큼 제약 조건이 낮습니다.

해결책:

코드 배열을 반복하고 k 값을 기준으로 적절한 숫자의 합을 계산하는 함수를 구현할 수 있습니다.

일반적인 접근 방식은 다음과 같습니다.

  1. k == 0이면 모든 요소를 ​​0으로 바꿉니다.
  2. K > 0, 각 요소를 원형 배열의 다음 k 요소의 합으로 바꿉니다.
  3. k < 0, 각 요소를 원형 배열의 이전 k 요소의 합으로 바꿉니다.

배열의 원형 특성은 배열 범위를 초과하는 인덱스의 경우 모듈로(%)를 사용하여 배열을 "둘러싸는" 수 있음을 의미합니다.

PHP에서 이 솔루션을 구현해 보겠습니다: 1652. 폭탄 해체






설명:

  1. 초기화:

    • array_fill을 사용하여 0으로 초기화된 결과 배열을 생성합니다.
  2. k == 0 처리:

    • k가 0이면 출력 배열은 문제의 요구에 따라 단순히 0으로 채워집니다.
  3. 배열 반복:

    • 배열의 각 인덱스 i에 대해:
      • K > 0, 모듈로 산술을 사용하여 다음 k 요소를 합산하여 둘러쌉니다.
      • k < 0, 이전 |k|의 합 음수 인덱스를 처리하기 위해 오프셋과 함께 모듈로 연산을 사용하는 요소.
  4. 모듈로 산술:

    • n - 1보다 큰 인덱스에 액세스할 때 배열의 시작 부분을 둘러싸기 위해 ($i $j) % $n을 사용합니다.
    • 마찬가지로 ($i - $j $n) % $n은 음수 인덱스에 대해 뒤로 줄 바꿈을 처리합니다.
  5. 복잡성:

    • 시간 복잡도: O(n . |k|), 여기서 n은 배열의 크기이고 |k|는 절대값입니다. .
    • 공간 복잡도: 결과 배열의 경우 O(n)

출력:

제공된 예는 예상 결과와 일치합니다. 추가 설명이나 최적화가 필요하면 알려주세요!

연락처 링크

이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!

이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.

  • 링크드인
  • 깃허브

위 내용은 폭탄을 해체하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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