题目 给你一个二维整数数组rectangles,其中rectangles〔i〕〔li,hi〕表示第i个矩形长为li高为hi。 给你一个二维整数数组points,其中points〔j〕〔xj,yj〕是坐标为(xj,yj)的一个点。 第i个矩形的左下角在(0,0)处,右上角在(li,hi)。 请你返回一个整数数组count,长度为points。length,其中count〔j〕是包含第j个点的矩形数目。 如果0xjli且0yjhi,那么我们说第i个矩形包含第j个点。 如果一个点刚好在矩形的边上,这个点也被视为被矩形包含。 示例1:输入:rectangles〔〔1,2〕,〔2,3〕,〔2,5〕〕,points〔〔2,1〕,〔1,4〕〕输出:〔2,1〕 解释:第一个矩形不包含任何点。 第二个矩形只包含一个点(2,1)。 第三个矩形包含点(2,1)和(1,4)。 包含点(2,1)的矩形数目为2。 包含点(1,4)的矩形数目为1。 所以,我们返回〔2,1〕。 示例2:输入:rectangles〔〔1,1〕,〔2,2〕,〔3,3〕〕,points〔〔1,3〕,〔1,1〕〕输出:〔1,3〕 解释:第一个矩形只包含点(1,1)。 第二个矩形只包含点(1,1)。 第三个矩形包含点(1,3)和(1,1)。 包含点(1,3)的矩形数目为1。 包含点(1,1)的矩形数目为3。 所以,我们返回〔1,3〕。 提示:1rectangles。length,points。length5104 rectangles〔i〕。lengthpoints〔j〕。length2 1li,xj109 1hi,yj100 所有rectangles互不相同。 所有points互不相同。解题思路分析 1、排序二分查找;时间复杂度O(nlog(n)),空间复杂度O(n) funccountRectangles(rectangles〔〕〔〕int,points〔〕〔〕int)〔〕int{n:len(points)res:make(〔〕int,n)arr:make(〔〕〔〕int,101)fori:0;ilen(rectangles);i{x,y:rectangles〔i〕〔0〕,rectangles〔i〕〔1〕arr〔y〕append(arr〔y〕,x)}fori:0;i101;i{sort。Ints(arr〔i〕)}fori:0;i{x,y:points〔i〕〔0〕,points〔i〕〔1〕forj:y;j101;j{total:len(arr〔j〕)sort。SearchInts(arr〔j〕,x)总和不满足要求的点res〔i〕res〔i〕total累加}}returnres} 2、排序;时间复杂度O(nlog(n)),空间复杂度O(n)funccountRectangles(rectangles〔〕〔〕int,points〔〕〔〕int)〔〕int{n:len(points)res:make(〔〕int,n)fori:0;i{points〔i〕append(points〔i〕,i)添加下标}sort。Slice(points,func(i,jint)bool{returnpoints〔i〕〔0〕points〔j〕〔0〕横坐标排序})sort。Slice(rectangles,func(i,jint)bool{returnrectangles〔i〕〔0〕rectangles〔j〕〔0〕横坐标排序})start:0arr:make(〔〕int,101)fori:0;i{x,y,index:points〔i〕〔0〕,points〔i〕〔1〕,points〔i〕〔2〕startlen(rectangles)xrectangles〔start〕〔0〕;start{arr〔rectangles〔start〕〔1〕〕把纵坐标次数1}forj:y;j101;j{遍历大于当前纵坐标res〔index〕res〔index〕arr〔j〕累加次数}}returnres}总结 Medium题目,注意数据范围1hi,yj100,使用数组来统计