第一题,合并区间,然后对合并后的结果进行判断 func main() { var n, m int for { flag, _ := fmt.Scanln(&;n, &;m) if flag == 0 { break } arr := make([][]int, n) for i := 0; i < n; i++ { arr[i] = make([]int, 2) fmt.Scanln(&;arr[i][0], &;arr[i][1]) } sort.Slice(arr, func(i, j int) bool { return arr[i][0] < arr[j][0] }) res := make([][]int, 0) count := make([]int, n) res = append(res, arr[0]) count[0] = 1 for i := 1; i < n; i++ { if arr[i][0] <= res[len(res)-1][1] { res[len(res)-1][1] = min(res[len(res)-1][1], arr[i][1]) res[len(res)-1][0] = arr[i][0] count[len(res)-1]++ } else { res = append(res, arr[i]) count[len(res)-1]++ } } if len(res) == 1 { if res[0][1]-res[0][0]+1 >= m { fmt.Println(n) } else { fmt.Println(n - 1) } } else if len(res) == 2 &;&; res[0][0] == 1 &;&; res[1][1] == m &;&; res[0][1] + 1 == res[1][0] { fmt.Println(n) } else { sort.Ints(count) fmt.Println(count[n-1]) } } }
点赞 评论

相关推荐

头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
牛客网
牛客企业服务