s******5 发帖数: 673 | 1 一个有n个整数数列,如果有符合下面条件,就返回1,如果没有返回0。
i, j, k都是这个数列里面的。
要求:a[i]+a[j]>a[k]; a[i]+a[k]>a[j]; a[j]+a[k]>a[i]
我知道最傻的办法就是用FOR不停循环判断。。。不知道有没有聪明点的办法
谢谢 | H****S 发帖数: 1359 | 2 先sorting,然后从a[0],a[1]开始,遍历a[2]->a[n],如果发现a[j] < a[0] + a[1],打印0,1,j; 如果发现 a[j] >= a[0] + a[1],退出这层循环,然后从a[1], a[2]开始重复。这个就是三角形吧。 | c******w 发帖数: 1108 | 3 先sort,从小到大
然后check a[i]+a[i+1] > a[i+2] or not for all i | s******5 发帖数: 673 | 4
Thank you!
【在 c******w 的大作中提到】 : 先sort,从小到大 : 然后check a[i]+a[i+1] > a[i+2] or not for all i
| g*****k 发帖数: 623 | 5 就是先排序,然后比较相邻3个数即可,
因为 for any i< j < k such that a[i]<= a[j] <= a[k]
if a[i]+a[j]>a[k] then
a[j-1]+a[j]>a[j+1] and a[j]+a[j+1]>a[j-1] and a[j-1]+a[j+1]>a[j]
because a[i]<=a[j-1], a[j+1]<=a[k]
【在 s******5 的大作中提到】 : 一个有n个整数数列,如果有符合下面条件,就返回1,如果没有返回0。 : i, j, k都是这个数列里面的。 : 要求:a[i]+a[j]>a[k]; a[i]+a[k]>a[j]; a[j]+a[k]>a[i] : 我知道最傻的办法就是用FOR不停循环判断。。。不知道有没有聪明点的办法 : 谢谢
|
|