반응형
[Kotlin] Array에 반복되는 아이템 삭제하기 - ArrayList distinct - LeetCode: Contains Duplicate - 풀이 과정
문제
Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
- Array에서 2번이상 반복되는 value가 있을경우 true를 return하고 반복되는 값이없으면 false를 return 하도록 하는게 이 문제의 목표입니다.
- Arraylist에 Distinct를 사용해서 반복되는 값을 지우고 기존 Array와 지운값의 Array를 비교하여 boolean을 반환해보겠습니다.
예시
위의설명과 같이 example1을 보면 1이 겹치기때문에 true를 return하고있습니다.example2는 겹치는 숫자가 없으므로 false를 return합니다.
풀이과정
- 문제에서 반환값이 Boolean이므로 true와 false를 리턴하게 해야합니다.
- 그리고 함수에 parameter로 intArray가 들어가게 됩니다. IntArray는 수정이 불가능하므로 arraylist를 새로 만들어 테스트하려합니다.
//nums = [1,2,3,1]
class Solution {
fun containsDuplicate(nums: IntArray): Boolean {
//새로운 비어있는 arrayList를 만들어줍니다.
var newArrayList = arrayListOf<Int>()
//intArray의 value들을 newArrayList에 복제해서 넣어줍니다.
for (i in 0..nums.size-1){ //nums의 사이즈는 4이지만 for loop에서는 0..3포지션을 의미해야하기때문에 -1을 해야합니다.
newArrayList.add(nums[i])//arraylist에 nums[0]부터 nums[3]까지 넣어줍니다.
}
// newArrayList는 수정가능하기때문에 distinct를 사용할수있게되었습니다.
// 그러므로 새로운 ArrayList를 secondArrayList 인스턴스해주었습니다.
var secondArrayList = newArrayList.distinct()
// distinct는 arraylist에 반복되는 값을 지우고 새로운 arraylist를 반환하는 함수입니다.
// 그러므로 newArrayList.distinct를 쓴다고 newArrayList에 distinct가 실행되지않습니다.
// 반복되는 값을 지운 Arraylist와 기존 Arraylist는 사이즈가 다르게됩니다.
//만약 사이즈가 다르면 반복된값이 지워졌다는 이야기이기때문에
var size1 = nums.size //nums intArray의 사이즈
var size2 = secondArrayList.size //distinct를 한 새로운 Array에 사이즈
//사이즈가 다를때 true를 return하고
if (size1 != size2) {
return true
} else {
// 사이즈가 같을때 false를 return합니다.
return false
}
}
}
반응형
'개발공부 > LeetCode' 카테고리의 다른 글
[Kotlin] LeetCode: Intersection of Two Arrays IISolution 풀이 (0) | 2021.06.11 |
---|---|
[Kotlin] Array 에 같은 숫자 찾기, HashMap활용 풀이 - LeetCode: Single Number (0) | 2021.06.10 |
[Kotlin] LeetCode - Best Time to Buy and Sell Stock IISolution - 풀이과정 (0) | 2021.06.05 |
[Kotlin] String, Int 순서 뒤집기 - LeetCode: Reverse Integer 풀이 (0) | 2021.06.05 |
[Kotlin] LeetCode 1. Two Sum 풀이 - for index, indices 활용 (0) | 2021.06.04 |