活跃农民
- 积分
- 624
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2017-2-21
- 最后登录
- 1970-1-1
|
把comedy 和drama 都sort一遍,然后搜索两遍,一次以drama 为第一个,第二次以comedy 为第一个, 最后打个擂台就是返回值。- fun findEarliestTime(comedy: IntArray, comedyDuration: IntArray, drama: IntArray, dramaDuration: IntArray): Int{
- val comedyFirst = helper(comedy, comedyDuration, drama, dramaDuration)
- val dramaFirst = helper( drama, dramaDuration, comedy, comedyDuration)
- return minOf(comedyFirst, dramaFirst)
- }
- fun helper(time1: IntArray, duration1: IntArray, time2: IntArray, duration2: IntArray): Int{
- val curr1 = Array(time1.size){IntArray(3)}
- val curr2 = Array(time2.size){IntArray(3)}
- for( (idx, time) in time1.withIndex()){
- curr1[idx] = intArrayOf(time, time + duration1[idx], duration1[idx])
- }
- for( (idx, time) in time2.withIndex()){
- curr2[idx] = intArrayOf(time, time + duration2[idx], duration2[idx])
- }
- curr1.sortBy{ it.first()}
- curr2.sortBy{it[1]}
- var res = Int.MAX_VALUE
- curr1.forEach{
- val end = it[1]
- for( video in curr2){
- if( video[0] > end ) continue
- res = minOf(res, end + video[2])
- }
- }
- return res
- }
复制代码 |
|