假设我们有一个数字n,我们必须找到Connell序列的第n个项。Connell序列如下:1.取第一个奇数整数:1 2.取下两个奇数整数2,4 3.然后取下三个奇数整数5、7、94。之后取下四个偶数整数10 ,12、14、16等。
因此,如果输入为12,则输出为21
为了解决这个问题,我们将遵循以下步骤-
i := 1
while quotient of (i *(i + 1) / 2) < n + 1, do
i := i + 1
idx := i *(i + 1) / 2, take only quotient
num := i^2
return num - 2 *(idx - n - 1)
让我们看下面的实现以更好地理解-
class Solution: def solve(self, n): i = 1 while (i * (i + 1) // 2) < n + 1: i += 1 idx = i * (i + 1) // 2 num = i**2 return num - 2 * (idx - n - 1) ob = Solution()print(ob.solve(12))
12
输出结果
21