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

相关文章
相关标签/搜索