第一项:1 —— 占1个序列 第二项:2 2 ——占2个序列 第三项:3 3 3 ——占3个序列 ··· 第k项: k1 k2 k3 ··· kk ——占k个序列 求第169个序列所在第几项? 故求第n个序列就是求第k项的前k项和,由是等差数列,n=k(k+1)/2, 因为第k项不管是k几序列,算出的都是小于或等于k的,故向上取整。
代码实现:
// 整体排序 function getItem01(num) { return Math.ceil((Math.sqrt(1 + 8 * num) - 1) / 2) } console.log(getItem01(169)); // 18 // 顺序算法 function getItem02(num) { for(let i = 1; i < num; i++) { if(i * (i - 1) / 2 <= num && i * (i + 1) / 2 >= num) { return i; } } } console.log(getItem02(169)); // 18
print (math.ceil((2*n+0.25)**0.5-0.5))