首页 > 其他分享 >AcWing刷题-区间合并

AcWing刷题-区间合并

时间:2024-03-31 12:03:05浏览次数:12  
标签:int 合并 list intervals new 刷题 List append AcWing

校门外的树

在这里插入图片描述
在这里插入图片描述

区间合并:

from typing import List
def merge(intervals: List[List[int]]) -> List[List[int]]:
    # 按照第一个元素从小到大进行排序
    intervals.sort(key=lambda x: x[0])
    # 初始化一个新的数组
    new_list = list()
    for i in intervals:
        # 把第一个数组元素添加到新的数组
        if not new_list:
            new_list.append(i)
            continue
        # 如果有重合 就合并
        if new_list[-1][1] >= i[0]:
            x = max(new_list[-1][1], i[1])
            new_list[-1][1] = max(new_list[-1][1], i[1])
        # 如果没有重合 就直接添加到新的数组
        else:
            new_list.append(i)
    return new_list
L,M = map(int,input().split())
a = []
for _ in range(M):
    a.append(list(map(int,input().split())))
new_a = merge(a)
sum = 0
for elem in new_a:
    sum += elem[1]-elem[0]+1
print(L+1-sum)

标签:int,合并,list,intervals,new,刷题,List,append,AcWing
From: https://blog.csdn.net/ofsurvival/article/details/137196106

相关文章

  • 【Java编程】【算法面试题】【数组合并】以数组 intervals 表示若干个区间的集合,其中
    原始题目:以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。......
  • java数据结构与算法刷题-----LeetCode1091. 二进制矩阵中的最短路径
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录广度优先+双分裂蛇广度优先+双分裂蛇双分裂蛇:是求二维表中从起点到终点的经典思路(也是......
  • java数据结构与算法刷题-----LeetCode95. 不同的二叉搜索树 II
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录分治回溯+记忆化搜索分治回溯+记忆化搜索卡特兰数,例如对于n个进栈元素,有多少种出栈顺序,......
  • easyexcel合并策略
    1、行合并@Slf4jpublicclassExcelRowHandlerimplementsRowWriteHandler{/***起始行索引*/privateIntegerstartRowIndex=0;/***结束行索引*/privateIntegerendRowIndex;privateSet<Integer>mergeColSe......
  • Acwing 1318. 取石子游戏(博弈论)
    https://www.acwing.com/problem/content/1320/输入样例:233输出样例:1#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;constLLN=100200,M=2020;intmain()......
  • Acwing 5475. 聚会 ( BFS )
    https://www.acwing.com/problem/content/5478/输入样例1:5543124321223344145输出样例1:22223输入样例2:76321233221122334255667输出样例2:1112211#pragmaGCCdiagnosticerror"-std=c++11"#pragmaGCCtarget(......
  • Acwing 1050. 鸣人的影分身
    https://www.acwing.com/problem/content/1052/输入样例:173输出样例:8#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;constLLN=200200,M=2020;LLn,m;LL......
  • 力扣刷题 45.跳跃游戏 II
    目录题干解题思路题干给定一个长度为 n 的 0索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i+j] 处:0<=j<=nums[i] i+j<n返回到达 nums[......
  • AcWing 799. 最长连续不重复子序列
    原题链接:https://www.acwing.com/problem/content/801/题目分析用数组记录每个元素出现的次数,遍历以第i个元素为结尾的[i,j]区间的最长长度显然[i-1,j]必然达到最大,所以每次重复会发生在新增添的a[i]上,j右移直到到达i和暴力做法的区别就在于指针不会回退代码细节每次先把......
  • AcWing 800. 数组元素的目标和
    原题链接:https://www.acwing.com/problem/content/802/题目分析数组是升序的,a[i]从小变大,b[j]从大变小。a代表目前可能匹配的a中最小值,若与目前b之和仍然大于k则必然j--;i从0开始从前往后遍历;j从m-1开始从后向前遍历;和纯暴力的O(n2) 算法的区别就在于:j指针不会......