LeetCode之Exam Room(Kotlin)

問題: git


方法: 經過TreeSet做爲座位的存儲容器,leave時清空對應座位,seat時遍歷全部入座狀況,向符合要求的位置插入。github

具體實現:bash

class ExamRoom(N: Int) {
    private val N = N

    private val seats = TreeSet<Int>()

    fun seat(): Int {
        var seat = 0
        if (seats.isNotEmpty()) {
            var dist = seats.first()
            var pre: Int? = null
            for (s in seats) {
                if (pre != null) {
                    val d = (s - pre) / 2
                    if (d > dist) {
                        seat = pre + d
                        dist = d
                    }
                }
                pre = s
            }
            if (N - 1 - seats.last() > dist) {
                seat = N - 1
            }
        }
        seats.add(seat)
        return seat
    }

    fun leave(p: Int) {
        seats.remove(p)
    }
}

fun main(args: Array<String>) {
    val examRoom = ExamRoom(10)
    examRoom.seat()
    examRoom.seat()
    examRoom.seat()
    examRoom.seat()
}
複製代碼

有問題隨時溝通ui

具體代碼實現能夠參考Githubspa

相關文章
相關標籤/搜索