我有一个从3开始的连续奇数阵。所以x = {3,4,5,6,7,8,9,10,11,12,13 ......}。 我想知道是否有一种快速的方法可以找到数字n的平方所在的索引。因此,如果n为5,我正在寻找阵列中25的位置。现在我有((n)*(n - 1))我添加到当前的i索引。有什么更快的吗?
答案 0 :(得分:0)
你的数组由连续的数字组成并且它被排序,因此它形成一个数学算术级数,差异为1,第一个元素为3,所以在索引i
我们有{{1}所以a[i]=i+3
。
因此要找到i=a[i]-3
让n
为nsqr
的平方的索引,nsqr索引只是n*n
,而nsqr-3
是O(1)
算法。
如果我们有连续排序的数字(以a0
开头并且d
不同),为了使其一般化,找到n
的平方在哪里(nsqr-a0)/d
。