2491. 플레이어를 동일한 실력의 팀으로 나누기
난이도:중
주제: 배열, 해시 테이블, 두 포인터, 정렬
당신은 짝수 길이 n의 양의 정수 배열 스킬을 받았습니다. 여기서 Skill[i]는 i번째 플레이어의 스킬을 나타냅니다. 각 팀의 총 실력이 동일되도록 플레이어를 n/2개의 크기 2 팀으로 나눕니다.
팀의 케미스트리는 그 팀 선수들의 실력 산물과 같습니다.
모든 팀의 케미스트리의 합을 반환하거나, 각 팀의 총 실력이 동일하도록 플레이어를 팀으로 나눌 수 있는 방법이 없는 경우 -1을 반환합니다..
예 1:
- 입력: 스킬 = [3,2,5,1,3,4]
- 출력: 22
-
설명:
- 플레이어를 다음 팀으로 나눕니다: (1, 5), (2, 4), (3, 3), 각 팀의 총 스킬은 6입니다.
- 모든 팀의 케미스트리의 합은 1*5 2*4 3*3 = 5 8 9 = 22입니다.
예 2:
- 입력: 스킬 = [3,4]
- 출력: 112
-
설명:
- 두 선수가 총 스킬 7로 팀을 구성합니다.
- 팀 케미스트리는 3*4=12입니다.
예 3:
- 입력: 스킬 = [1,1,2,3]
- 출력: -1
- 설명: 각 팀의 총 실력이 동일하도록 선수들을 팀으로 나눌 수 있는 방법은 없습니다.
제약조건:
- 2 5
- Skill.length가 짝수입니다.
- 1
힌트:
- 스킬 배열을 정렬해 보세요.
- 가장 약한 플레이어와 가장 강한 플레이어를 짝짓는 것이 항상 최적입니다.
해결책:
제공된 힌트를 따르고 탐욕스러운 접근 방식을 사용할 수 있습니다. 솔루션에 대한 자세한 내용은 다음과 같습니다.
단계:
스킬 배열 정렬: 정렬을 사용하면 가장 약한 플레이어(가장 작은 값)와 가장 강한 플레이어(가장 큰 값)를 효율적으로 짝을 이룰 수 있습니다.
유효한 페어링 확인: 각 팀의 기술 합계가 동일해야 합니다. 정렬 후에는 가장 작은 요소와 가장 큰 요소를 쌍으로 묶은 다음 두 번째로 작은 요소와 두 번째로 큰 요소 등을 연결합니다. 어떤 시점에서든 쌍의 합이 이전 합과 다른 경우 플레이어를 유효한 팀으로 나눌 수 없으며 -1을 반환해야 합니다.
조직력 계산: 각 팀의 조직력은 해당 팀의 두 기술의 산물입니다. 유효한 각 팀의 모든 화학 값을 합산합니다.
전체 케미스트리 반환: 모든 팀의 전체 스킬이 동일한 경우 케미스트리의 합을 반환합니다.
이 솔루션을 PHP로 구현해 보겠습니다: 2491. 플레이어를 동일한 실력의 팀으로 나누기
<p><?php <br> /**</p>
- @param Integer[] $skill
- @return Integer
/
function dividePlayers($skill) {
...
...
...
/*
- go to ./solution.php */ }
// Test cases
$skill1 = [3, 2, 5, 1, 3, 4];
$skill2 = [3, 4];
$skill3 = [1, 1, 2, 3];
echo dividePlayers($skill1) . "\n"; // Output: 22
echo dividePlayers($skill2) . "\n"; // Output: 12
echo dividePlayers($skill3) . "\n"; // Output: -1
?>
설명:
정렬: 배열 기술은 가장 작은 값과 가장 큰 값을 효율적으로 쌍으로 연결할 수 있도록 정렬됩니다.
두 개의 포인터: 두 개의 포인터(처음부터 시작하는 $i와 끝부터 시작하는 $j)를 사용합니다. 각 유효한 쌍(최소 및 최대)에 대해 해당 합계가 예상되는 teamSkillSum과 동일한지 확인합니다. 그렇지 않으면 선수들을 팀으로 나누는 것이 불가능합니다.
화학 계산: 쌍이 유효한 경우 화학은 두 값($skill[$i] * $skill[$j])의 곱으로 계산되며, 계속해서 전체 케미스트리에 추가해 보세요.
-
최첨단 케이스:
- 합계가 다르기 때문에 팀을 구성할 수 없는 경우 -1을 반환합니다.
- 코드는 길이가 짝수인 경우를 처리하고 모든 플레이어가 올바르게 페어링되었는지 확인합니다.
시간 복잡도:
- 배열 정렬에는 O(n log n)이 소요되고, 두 포인터 순회에는 O(n)이 소요됩니다. 따라서 전체 시간 복잡도는 O(n log n)이며 이는 제약 조건을 고려하면 효율적입니다.
이 솔루션은 최대 105명의 플레이어
라는 주어진 제약 내에서 작동합니다.연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.
- 링크드인
- 깃허브
위 내용은 플레이어를 동일한 기술을 가진 팀으로 나누기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER

TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.

DatabaseQuesyOptimizationInphPinVolvesVesstoigiestoInsperferferferferformance.1) SelectOnlyNecessaryColumnstoredAtatatransfer.2) useinDexingTeSpeedUpdatarretieval.3) ubstractOrerEresultSoffRequeries.4) UtilizePreDstatements Offeffi


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.