https://leetcode.com/problems/design-hashmap/ Easy

Условие

Реализуйте структуру данных HashMap без использования встроенных хеш-таблиц. Необходимо реализовать класс MyHashMap со следующими методами:

put(key: Int, value: Int)

get(key: Int): Int

remove(key: Int)

Решение

class MyHashMap {
    private val size = 1009
    private val buckets = Array(size) { mutableListOf<Pair<Int, Int>>() }

    private fun hash(key: Int) = key % size

    fun put(key: Int, value: Int) {
        val index = hash(key)
        val bucket = buckets[index]
        for (i in bucket.indices) {
            if (bucket[i].first == key) {
                bucket[i] = key to value
                return
            }
        }
        bucket.add(key to value)
    }

    fun get(key: Int): Int {
        val index = hash(key)
        for ((k, v) in buckets[index]) {
            if (k == key) return v
        }
        return -1
    }

    fun remove(key: Int) {
        val index = hash(key)
        val bucket = buckets[index]
        val iterator = bucket.iterator()
        while (iterator.hasNext()) {
            if (iterator.next().first == key) {
                iterator.remove()
                return
            }
        }
    }
}