Math 数字对齐算法
是否有一种算法,它将取两列数字,并确定它们是否有共同的值 两列: 每个值增加1.3。另一个增长不稳定。我想确定这两列是否有共同的值Math 数字对齐算法,math,Math,是否有一种算法,它将取两列数字,并确定它们是否有共同的值 两列: 每个值增加1.3。另一个增长不稳定。我想确定这两列是否有共同的值 .3 .1 .6 .2 .9 .4 1.2 .5 1.5 .9 1.8 .13 如果两个系列都在增加(或通常为1),则存在O(n)解决方案。没有比这更好的了,因为在最坏的情况下,您需要至少查看一次不规则增长列表中的每个元素 只需以类似拉链的方式同时遍历这两个元素:始终从列表中获取下一个元素,该元素当前比另一个元素小 > .3 .1 <
.3 .1
.6 .2
.9 .4
1.2 .5
1.5 .9
1.8 .13
如果两个系列都在增加(或通常为1),则存在O(n)
解决方案。没有比这更好的了,因为在最坏的情况下,您需要至少查看一次不规则增长列表中的每个元素
只需以类似拉链的方式同时遍历这两个元素:始终从列表中获取下一个元素,该元素当前比另一个元素小
> .3 .1 < | > .3 .1 | > .3 .1 | .3 .1 | .3 .1 | .3 .1
.6 .2 | .6 .2 < | .6 .2 | > .6 .2 | > .6 .2 | > .6 .2
.9 .4 | .9 .4 | .9 .4 < | .9 .4 < | .9 .4 | .9 .4
.12 .5 | .12 .5 | .12 .5 | .12 .5 | .12 .5 < | .12 .5
.15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 <
.18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13
.3.1<|>.3.1 |>.3.1 |.3.1 |.3.1 |.3.1
.6 .2 | .6 .2 < | .6 .2 | > .6 .2 | > .6 .2 | > .6 .2
.9 .4 | .9 .4 | .9 .4 < | .9 .4 < | .9 .4 | .9 .4
.12 .5 | .12 .5 | .12 .5 | .12 .5 | .12 .5 < | .12 .5
.15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 <
.18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13
1如果两个系列都在增加(或通常已分拣),则排序意味着a。存在一个
O(n)
解决方案。没有比这更好的了,因为在最坏的情况下,您需要至少查看一次不规则增长列表中的每个元素
只需以类似拉链的方式同时遍历这两个元素:始终从列表中获取下一个元素,该元素当前比另一个元素小
> .3 .1 < | > .3 .1 | > .3 .1 | .3 .1 | .3 .1 | .3 .1
.6 .2 | .6 .2 < | .6 .2 | > .6 .2 | > .6 .2 | > .6 .2
.9 .4 | .9 .4 | .9 .4 < | .9 .4 < | .9 .4 | .9 .4
.12 .5 | .12 .5 | .12 .5 | .12 .5 | .12 .5 < | .12 .5
.15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 <
.18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13
.3.1<|>.3.1 |>.3.1 |.3.1 |.3.1 |.3.1
.6 .2 | .6 .2 < | .6 .2 | > .6 .2 | > .6 .2 | > .6 .2
.9 .4 | .9 .4 | .9 .4 < | .9 .4 < | .9 .4 | .9 .4
.12 .5 | .12 .5 | .12 .5 | .12 .5 | .12 .5 < | .12 .5
.15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 | .15 .9 <
.18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13 | .18 .13
1其中排序意味着相对于a。由于列表中有一个数字稳步增加
0.3
,因此当不规则增加的列表当前包含较大的元素时,您可以一次跳过几个数字。但除此之外,我认为你无能为力。不过你还是不会比O(n)
快。谢谢。那时我还得在片场工作。我真的想要那个O(log(n))。@PrincePeregrine,那是行不通的。在最坏的情况下,你需要查看不规则增长列表中的每个元素。是的,我所说的对集合进行操作的意思是尝试修改它,以得到一个更好的集合,我可以想出一个O(log(n))算法。“我听到你说的是事实,”普林斯佩雷格林校长假设你正在谈论构建你的数字列表,你可以为此提出一个新问题。请记住,只要您有一堆数据需要处理成某种形式,并保留所有数据,运行时通常至少是O(n)
。你确定这对你来说是一个性能问题吗?因为你的列表有一次稳定地增加了0.3
,当不稳定地增加的列表当前包含较大的元素时,你可以一次跳过几个数字。但除此之外,我认为你无能为力。不过你还是不会比O(n)
快。谢谢。那时我还得在片场工作。我真的想要那个O(log(n))。@PrincePeregrine,那是行不通的。在最坏的情况下,你需要查看不规则增长列表中的每个元素。是的,我所说的对集合进行操作的意思是尝试修改它,以得到一个更好的集合,我可以想出一个O(log(n))算法。“我听到你说的是事实,”普林斯佩雷格林校长假设你正在谈论构建你的数字列表,你可以为此提出一个新问题。请记住,只要您有一堆数据需要处理成某种形式,并保留所有数据,运行时通常至少是O(n)
。你确定这对你来说是一个性能问题吗?是的,有这样一个算法。第一个算法总是从0.3开始吗?每个算法的初始值根据输入而变化。0.9+0.3!=0.12-你对第一列的意思是其他吗?是的,有这样一种算法。第一列总是从0.3开始吗?每个列的初始值都会根据输入而变化。0.9+0.3!=0.12-第一栏你是指其他内容吗?