Lintcode 382. 三角形计数

来源:互联网 发布:2018优化方案英语答案 编辑:程序博客网 时间:2024/05/29 18:43

给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?

样例

例如,给定数组 S = {3,4,6,7},返回 3

其中我们可以找到的三个三角形为:

{3,4,6}{3,6,7}{4,6,7}

给定数组 S = {4,4,4,4}, 返回 4

其中我们可以找到的三个三角形为:

{4(1),4(2),4(3)}{4(1),4(2),4(4)}{4(1),4(3),4(4)}{4(2),4(3),4(4)}
解法:本题采用先排序然后使用双指针的方法

class Solution:    """    @param: S: A list of integers    @return: An integer    """    def triangleCount(self, S):        # write your code here        S.sort()        if len(S) <= 2:            return 0        else:            num = 0            for i in range(2, len(S)):                j = 0                k = i - 1                while j < k:                    if S[j] + S[k] > S[i]:                        num = num + k - j                        k = k - 1                    else:                        j = j + 1            return num

原创粉丝点击