问题
给出一个整数列表,确定序列,其中相距正好N个索引的连续数字的值等于N乘以序列中的前一个数字。
规则:
N必须大于1
条目少于3个的序列应为 忽略
返回的序列必须始终尽可能长 给定N
全零的序列不计算
我的解决方案
每次迭代:
1.a分别在current_number
和current_index
中保存当前数字和当前索引。
1.b计算current_number
可以容纳的连续数字序列的最大可能数目,并将此数字保存在nested_iteration_count
中。
1.c以nested_iteration_count
的循环计数和N的最小可能值N = 2开始嵌套迭代
1.c.1检查序列是否存在。如果存在,则将序列存储在数组中
1.c.2将N递增1,然后重复循环,直到内部循环迭代完成为止。
为下一个号码重复外循环
示例
请考虑以下整数列表:
数字2 10 4 3 8 6 9 9 18 27
索引0 1 2 3 4 5 6 7 8 9
找到以下序列:
该算法显然具有O(n^2)
复杂度。有可能对此进行改进吗?
答案 0 :(得分:2)
使用@ user3386109优化的快速Python实现
第一阶段检查乘数N是否随第i个项目继续进行
第二阶段-检索每个N的最长序列-可能会更简洁
var ki = kd = 1;
function increase()
{
ki++;
$.ajax({
type: "POST",
url: 'inc/functions.php',
data: {'page':ki},
success: function(response) {
content.html(response);
}
});
}
function decrease()
{
kd--;
$.ajax({
type: "POST",
url: 'inc/functions.php',
data: {'page':kd},
success: function(response) {
content.html(response);
}
});
}
包含res
(N:(count, endingindex)
{2: (3, 4), 3: (3, 9)}