Leetcode学习笔记

1. 关于求面积的题目

1.1 求交集区域内的最大正方形面积

给定矩形的坐标,要求求相关面积的,可以用到投影思路,减少判断,提高编写代码效率,要知道求面积也就是2维,为何不把它转换为2个1维的呢?也就是把矩形转换到对应的x、y轴上去进行一系列比较、计算等。比如这题。。3047. 求交集区域内的最大正方形面积

参考代码为:

python 复制代码
class Solution(object):
    def largestSquareArea(self, bottomLeft, topRight):

        n = len(bottomLeft)
        ans = 0
        for i in range(n):
            x1, y1 = bottomLeft[i]
            r_x1, r_y1 = topRight[i]
            for j in range(i + 1, n):
                x2, y2 = bottomLeft[j]
                r_x2, r_y2 = topRight[j]
                v1 = min(r_x1,r_x2) - max(x1,x2)
                # x轴的投影 如果没有重叠,值应该为负
                v2 = min(r_y1,r_y2) - max(y1,y2)
                # y轴的投影 
                v3 = min(v1,v2)
                ans = max(v3,ans) 
        return ans ** 2

1.2 移除栅栏得到的正方形田地的最大面积

这题也是关于求解面积的,不同的是,其实本题主要是找到两个列表中相同数据并得到其中的最大值,为此,可以应用到集合求交集思路。如果运用双重for循环一个一个判断,数据量少的情况下还可以,但是数据量多肯定会超时,此时,运用集合交集思路,时间复杂度为O(n+m),而之前的为O(m*n),具体就是把两个列表首先转化为集合,这样根据集合数据的唯一性,首先就可以去掉原先列表中的重复数据,然后再对于两个集合进行交集操作即可。移除栅栏得到的正方形田地的最大面积

参考代码如下:

python 复制代码
class Solution:
    def maximizeSquareArea(self, m: int, n: int, hFences: List[int], vFences: List[int]) -> int:
        def fun(arr,num):
            arr = sorted([1] + arr + [num])
            return {
            arr[j] - arr[i]
            for i in range(len(arr))
            for j in range(i + 1, len(arr)) }
        hs,vs =  fun(hFences,m),fun(vFences,n)
        mod = 10 ** 9 + 7
        ans = max(hs & vs,default=0)
        return ans ** 2 % mod if ans else -1    
相关推荐
三品吉他手会点灯12 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
kobesdu12 小时前
【ROS2实战笔记-12】rosshow:终端里的盲文可视化与无头机器人的现场调试
笔记·机器人·ros·移动机器人
sakiko_13 小时前
UIKit学习笔记1-创建项目(使用UIKit)、使用组件
笔记·学习
生信碱移13 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
智者知已应修善业13 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
圣保罗的大教堂14 小时前
leetcode 1855. 下标对中的最大距离 中等
leetcode
星幻元宇VR15 小时前
VR航空航天科普设备【VR时空直升机】
科技·学习·安全·生活·vr
_李小白15 小时前
【android opencv学习笔记】Day 2: Mat类(图片数据结构体)
android·opencv·学习
智者知已应修善业16 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
JasmineX-116 小时前
数据结构(笔记)——双向链表
c语言·数据结构·笔记·链表