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

来源:互联网 发布:spark mongodb python 编辑:程序博客网 时间:2024/06/06 03:31

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
原创粉丝点击