Javascript 给定一个数字数组的可能三角形数
我试图在这里找到可以由一组数字组成的可能三角形的数量: 我已经编写了它的javaScript版本。但是,我并不真正理解解决方案的一部分:Javascript 给定一个数字数组的可能三角形数,javascript,algorithm,math,Javascript,Algorithm,Math,我试图在这里找到可以由一组数字组成的可能三角形的数量: 我已经编写了它的javaScript版本。但是,我并不真正理解解决方案的一部分: // Total number of possible triangles that can // be formed with the two fixed elements is // k - j - 1. The two fixed elements are arr[i] //
// Total number of possible triangles that can
// be formed with the two fixed elements is
// k - j - 1. The two fixed elements are arr[i]
// and arr[j]. All elements between arr[j+1]/ to
// arr[k-1] can form a triangle with arr[i] and arr[j].
// One is subtracted from k because k is incremented
// one extra in above while loop.
// k will always be greater than j. If j becomes equal
// to k, then above loop will increment k, because arr[k]
// + arr[i] is always greater than arr[k]
问题:
我还是不明白这个逻辑。k-j
是如何进入画面的?
用arr[i]、arr[j]和arr[k](用arr[i]k-j
我对这部分不太清楚。var triangalNumber=函数(arr){
设计数=0,n=arr.length;
//按升序对数组排序。
arr.sort((a,b)=>{返回a-b;});
//设置三个指针,i,j=i+1和k=i+2
对于(设i=0;i有k-j
元素,从j
之后的元素开始到k
元素。它们都是三角形的有效第三边,以arr[i]
和arr[j]
作为前两条边
例如,如果前两个边是arr[2]
和arr[4]
,最高的k
,其中arr[i]+arr[j]>arr[k]
是10
,你可以用k=5、6、7、8、9或10
组成一个三角形。那里有6个索引,10-4=6
是关于数学还是程序的问题?如果是关于数学的,那会更好。你在链接的页面上读过方法的第3步吗?它解释了k-j
com是的。@Barmar我画了。但是我仍然无法画出下面的语句Fix'I'和'j',并找到最右边的索引'k'(或最大的'arr[k]'),例如'arr[I]+arr[j]>arr[k]'。可以由'arr[I]'和'arr[j]组成的三角形的数量'因为两边都是'k–j'。将'k–j'添加到三角形的计数中。
我们如何证明k-j是计数?感谢您的时间。