classSolution { funfindCrossingTime(n: Int, k: Int, time: Array<IntArray>): Int { /* 工人数组定义 |0 |1 |2 |3 |4 |5 |index |LtR |up |RtL |down |time(进入仓库的时间,完成作业时间即timer+up/down) */ val efficiency = Comparator<IntArray> { a, b -> if (a[1] + a[3] != b[1] + b[3]) { (b[1] + b[3]) - (a[1] + a[3]) } else { b[0] - a[0] } } val pickUp = Comparator<IntArray> { a, b -> (a[5] + a[2]) - (b[5] + b[2]) } val pickDown = Comparator<IntArray> { a, b -> (a[5] + a[4]) - (b[5] + b[4]) }
val leftWorkers = PriorityQueue(efficiency) //左桥排队 val rightWorkers = PriorityQueue(efficiency) //右桥排队 val leftRepo = PriorityQueue(pickDown) //左仓库操作中工人 val rightRepo = PriorityQueue(pickUp) //右仓库操作中工人
var leftCnt = 0//左仓库箱子数量 var rightCnt = n //右仓库箱子数量 var timer = 0//计时器
var worker: IntArray for ((index, arr) in time.withIndex()) { leftWorkers.add(intArrayOf(index) + arr + intArrayOf(0)) }