Math 数字对齐算法

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 <

是否有一种算法,它将取两列数字,并确定它们是否有共同的值

两列:

每个值增加1.3。另一个增长不稳定。我想确定这两列是否有共同的值

.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-第一栏你是指其他内容吗?