Kotlin을 사용한 LeetCode. 2합
2954 단어 kotlincomputerscience
소개
비디오 버전
GitHub 코드
Leetcode의 두 합계
어려움
솔루션 시간 복잡도
코틀린 솔루션
fun twoSum(nums: IntArray, target: Int): IntArray {
val map = HashMap<Int,Int>()
for(item in nums.indices){
val partner = target - nums[item]
if(map.containsKey(partner)){
val returnedArray = intArrayOf(map[partner]!!,item)
return returnedArray
}else{
map[nums[item]] = item
}
}
throw IllegalArgumentException("NOTHING FOUND")
}
}
설명
따라서 Kotlin 코드는 때때로 약간 펑키할 수 있으므로 한 줄씩 살펴보겠습니다. 먼저
IntArray
부터 시작하겠습니다. 이를 primitive array
라고 합니다. Kotlin에는 프리미티브 유형의 배열을 나타내는 특수 클래스가 있어 몇 줄의 코드를 절약할 수 있습니다(Kotlin에게 감사드립니다).HashMap
는 실제로 Java HashMap입니다. Kotlin의 소스 코드HERE를 보면 표준java.util.HashMap
을 사용하여 해시 맵을 구현하는 것을 볼 수 있습니다. 해시 맵이 무엇인지 궁금하다면 그것은 그 자체로 또 다른 주제입니다. 그러나 그것이 키 값 쌍으로 항목을 저장하고 일정한 시간에 액세스할 수 있는 데이터 구조라는 점만 알아두십시오. 멋진 배열처럼 생각할 수 있습니다. nums
배열을 반복하고 for(item in nums.indices)
를 사용하여 IntRange
를 제공하고 기본 Java for 루프처럼 반복할 수 있습니다. 범위에 대해 자세히 알아보기HEREval partner = target - nums[item]
파트너는 우리가 실제로 찾고 있는 것입니다. 그것은 우리의 목표를 제공하기 위해 합산될 여분의 숫자입니다. if(map.containsKey(partner))
. 맵에 파트너가 포함되어 있으면 원하는 것을 가지고 있다는 의미이므로 intArrayOf(map[partner]!!,item)
와 같이 필요한 인덱스가 있는 새로운 int 배열을 반환할 수 있습니다. item
는 nums 배열의 현재 인덱스입니다. if(map.containsKey(partner))
가 거짓이면 현재 값을 지도의 배열에 추가합니다. map[nums[item]] = item
. 이 코드는 인덱싱과 유사하기 때문에 이상하게 보일 수 있지만 인덱싱은 아닙니다. map[nums[item]] = item
는 map.set(nums[item],item)
와 완전히 동일합니다.throw IllegalArgumentException("NOTHING FOUND")
.결론
Reference
이 문제에 관하여(Kotlin을 사용한 LeetCode. 2합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theplebdev/leetcode-with-kotlin-two-sum-1f33텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)