N-Repeated Element in Size 2N Array

Sett·2021년 7월 14일
1

문제

https://leetcode.com/problems/n-repeated-element-in-size-2n-array/

문제 접근

  1. 이중 포문으로 i를 j를 두어 i == j인 지점을 다 찾아서 임시 카운트에 저장함.
  2. 만약 배열의 사이즈 / 2와 같다면 그 즉시 멈추고 결과를 반환 하도록 함.
  3. 좀 연산이 느렸음. 2중 포문 때문인 것 같아서
  4. for문을 3번 돌리는 연산으로 바꿈
  5. 첫 번째 포문 해쉬 초기화, 각 해쉬의 키 값에 중복되는 값 만큼 저장, 해쉬 탐색 후 결과 반환 이렇게 3단계로 나눠서 좀 더 해쉬 개념에 가깝게 하려고 했음.
  6. n^2 비스무리에서 3n 비스무리로 개선될 줄 알았지만 더 느려짐. 안해 ㅅㄱ

소스 코드

  • 이중 포문
func repeatedNTimes(_ nums: [Int]) -> Int {
         let size = nums.count / 2
        var tempCount = 0
        var result = 0
        for i in 0..<nums.count {
            for j in 0..<nums.count {
                if (nums[i] == nums[j]){
                    tempCount += 1
                }
            }
            if tempCount == size {
                result = nums[i]
                break
            }
            tempCount = 0
        }
        return result
    }
  • 해쉬
func repeatedNTimes(_ nums: [Int]) -> Int {
        var result = 0
        let size = nums.count / 2
        var map: [Int:Int] = [:]
        for i in 0..<nums.count {
            map[nums[i]] = 0
        }
        for j in 0..<nums.count {
            map[nums[j]]! += 1
        }
        map.forEach { key, value in
            if value == size {
                result = key
            }
        }
        return result
    }
profile
안녕하세요

0개의 댓글

관련 채용 정보