博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode Triangle Count
阅读量:5355 次
发布时间:2019-06-15

本文共 1155 字,大约阅读时间需要 3 分钟。

原题链接在这里:

题目:

Given an array of integers, how many three numbers can be found in the array, so that we can build an triangle whose three edges length is the three numbers that we find?

Example

Given array S = [3,4,6,7], return 3. They are:

[3,4,6][3,6,7][4,6,7]

Given array S = [4,4,4,4], return 4. They are:

[4(1),4(2),4(3)][4(1),4(2),4(4)][4(1),4(3),4(4)][4(2),4(3),4(4)]

题解:

与类似.

也是Two Pointers, 构成三角要求三条边成a + b > c. 设S[i] 为c, 前面的数中选出S[l]为a, S[r]为b. 

若是S[l] + S[r] > c则符合要求,还会有r-l种组合若继续向右移动l. 所以res += r-l. r左移一位.

若是S[l] + S[r] <= c, 则向右移动l.

Time Complexity: O(n^2). sort 用时O(nlogn), 对于每一个c, Two Points用时O(n). n = S.length.

Space: O(1).

AC Java:

1 public class Solution { 2     public int triangleCount(int S[]) { 3         if(S == null || S.length < 3){ 4             return 0; 5         } 6          7         int res = 0; 8         Arrays.sort(S); 9         for(int i = 2; i
S[i]){14 res += r-l;15 r--;16 }else{17 l++;18 }19 }20 }21 return res;22 }23 }

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/6362616.html

你可能感兴趣的文章
angular、jquery、vue 的区别与联系
查看>>
javascript中sort()排序方法总结
查看>>
实现聊天界面的代码
查看>>
自己生成一个NDK的浅析
查看>>
Excel数据导入到数据库
查看>>
jQuery最佳实践
查看>>
SELinux FAQ
查看>>
Java中synchronized同步的理解
查看>>
python 数值计算库
查看>>
java 服务重启 js 中被注释代码仍然执行
查看>>
我并不是不闻不问![C#]
查看>>
web前端经典小题
查看>>
AutoCAD如何倒角 倒圆角 倒直角
查看>>
Office PPT中如何插入flash
查看>>
C# Fade Form Effect With the AnimateWindow API Function
查看>>
golang多维数组的切片
查看>>
IP 网际协议
查看>>
C语言_第五章__实践(密码转换)
查看>>
docker 容器后台运行命令
查看>>
jquery 获取css position的值
查看>>