题解 | 校门外的树
校门外的树
https://www.nowcoder.com/practice/0e8cfc82936048769af45967f3c4ef7e
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
func main() {
sc := bufio.NewScanner(os.Stdin)
sc.Scan()
l, _ := strconv.Atoi(strings.Fields(sc.Text())[0])
m, _ := strconv.Atoi(strings.Fields(sc.Text())[1])
a := make([][]int, m)
for i := 0; i < m; i++ {
sc.Scan()
left, _ := strconv.Atoi(strings.Fields(sc.Text())[0])
right, _ := strconv.Atoi(strings.Fields(sc.Text())[1])
a[i] = []int{left, right}
}
sort.Slice(a, func(i, j int) bool {
return a[i][0] < a[j][0]
})
var merged [][]int
if m > 0 {
merged = append(merged, a[0])
for i := 1; i < m; i++ {
last := merged[len(merged)-1]
courrent := a[i]
if courrent[0] <= last[1] {
last[1] = max(courrent[1], last[1])
merged[len(merged)-1] = last
} else {
merged = append(merged, courrent)
}
}
}
sum := 0
for _, e := range merged {
sum += e[1] - e[0] + 1
}
fmt.Print(l + 1 - sum)
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
SHEIN希音公司福利 292人发布