LeetCode之Merge Intervals(Kotlin)

問題: git


方法: 首先排序,使區間按起點從小到大排序。而後遍歷區間,按規則(三種狀況)合併區間,最後輸出的即爲最終結果。github

具體實現:bash

class MergeIntervals {
    fun merge(intervals: Array<IntArray>): Array<IntArray> {
        val result = mutableListOf<IntArray>()
        intervals.sortWith(Comparator { o1, o2 ->
            o1[0] - o2[0]
        })
        for (interval in intervals) {
            if (result.isEmpty()) {
                result.add(interval)
            } else {
                val lastInterval = result.last()
                if (lastInterval[1] < interval[0]) {
                    result.add(interval)
                } else {
                    if (lastInterval[0] > interval[0]) {
                        lastInterval[0] = interval[0]
                    }
                    if (interval[1] > lastInterval[1]) {
                        lastInterval[1] = interval[1]
                    }
                }
            }
        }
        return result.toTypedArray()
    }
}


fun main(args: Array<String>) {
    val intervals = arrayOf(intArrayOf(1, 4), intArrayOf(0, 0))
    val mergeIntervals = MergeIntervals()
    CommonUtils.print2DIntArray(mergeIntervals.merge(intervals))
}
複製代碼

有問題隨時溝通ui

具體代碼實現能夠參考Githubspa

相關文章
相關標籤/搜索