찾다
Java두 개의 2D 목록 알고리즘의 중복을 확인하시겠습니까?

PHP 편집자 Baicao는 Java 알고리즘에 대한 멋진 Q&A를 가져왔습니다. 두 개의 2차원 목록에서 중복 요소를 확인하는 방법은 무엇입니까? 이는 많은 Java 프로그래머가 일상적인 개발에서 자주 직면하는 문제 중 하나입니다. 이 기사의 토론과 분석을 통해 독자는 다양한 솔루션과 최적화 전략에 대해 배울 수 있으므로 Java 프로그래밍에서 유사한 문제를 처리하는 방법과 기술을 더 잘 이해하고 숙달할 수 있습니다.

질문 내용

두 개의 목록>(a와 b라고 함)이 주어졌습니다.

반환: map, list>>

  • a와 b의 항이 a1, a2, a3,...이고 b1, b2, b3...이라고 가정합니다.
  • b1 및 a1 요소(list)에서 문자열이 겹치는 항목만 선택하세요
  • 결과에 키 = b1, 값 = a1을 입력하세요.

예시)

으아악

실제로 a와 b의 목록 길이는 최소한 100,000개가 넘을 것입니다. 나는 list.contains를 사용하여 이 접근 방식을 시도했지만 최악의 경우 시간 복잡도는 o(n^3)이었습니다.

여기 내 코드가 있습니다. 이 알고리즘의 시간 복잡도를 o(n^2) 미만으로 줄이고 싶습니다.

define a and b as follows:
a = [a, b, c], [d, e, f], [a, d, f]
b = [a, d], [a], [c], [x]

it returns : 
key        value 
[a,d]    | [a,b,c],[d,e,f],[a,d,f] 
[a]      | [a,b,c],[a,d,f] 
[c]      | [a,b,c] 
[x]      | empty list

해결 방법

이를 o(n^2) 以下,但为了将其减少到 o(n^2),我们可以通过 hashmap 减少 <code>list.contains o(n) .get,即 o(1)시간 복잡성으로 줄이는 방법이 있는지 잘 모르겠습니다.

해당 목록을 contains,而是查找列表 a 中元素的索引,b 元素将获取该索引并获取 a 확인하지 않는 것이 좋습니다.

먼저 map,其中包含 a 요소를 키로, 값을 인덱스로 구성합니다.

으아악

이것은 ainset의 출력입니다. 이제 해당 항목이 속한 요소의 인덱스 목록이 표시됩니다.

으아악

그럼 해당 요소를 b 中元素列表的索引组合起来,得到 a 살펴보겠습니다.

예를 들어 [a, d],我们有一个组合集 [0, 1, 2]. 코드는 다음과 같습니다

으아악

위 내용은 두 개의 2D 목록 알고리즘의 중복을 확인하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 stackoverflow에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

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

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경