leetcode -- Rectangle Area -- 看看计算公式

https://leetcode.com/problems/rectangle-area/

思路1

ref:http://bookshadow.com/weblog/2015/06/08/leetcode-rectangle-area/
用最小的右端点减去最大的左端点. 例如对于[A,C] 与[E,G], 求相交长度公式为max(min(C, G) - max(A, E), 0), 这里用嘴简单的那种AECG这种相交的case来记这个公式。右端点的min减去左端点的max,再与0取max

class Solution:
    # @param {integer} A
    # @param {integer} B
    # @param {integer} C
    # @param {integer} D
    # @param {integer} E
    # @param {integer} F
    # @param {integer} G
    # @param {integer} H
    # @return {integer}
    def computeArea(self, A, B, C, D, E, F, G, H):
        sums = (C - A) * (D - B) + (G - E) * (H - F)
        return sums - max(min(C, G) - max(A, E), 0) * max(min(D, H) - max(B, F), 0)

other method

知道计算公式就行。自己的公式也可以.最好是用ref的公式

my code

class Solution(object):
    def computeArea(self, A, B, C, D, E, F, G, H):
        """
        :type A: int
        :type B: int
        :type C: int
        :type D: int
        :type E: int
        :type F: int
        :type G: int
        :type H: int
        :rtype: int
        """
        #这里两个线段是[A,C], [E,G], 为了求相交线段的长度,我们先求左端点的最大值,然后,分别用右端点减去这个最大值,然后求这两者的min。GC地位相同,play the same role 所以也要减去max(A,E)
        a = min(C - max(A,E), G - max(A,E))

        b = min(D - max(B,F), H - max(B,F))
        sum_area = (C - A) * (D - B) + (G - E) * (H - F)

        if a > 0  and b > 0:
            return sum_area - a * b
        else:
            return sum_area
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值