Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如果下一个元素较小,请删除_Ruby_Algorithm - Fatal编程技术网

Ruby 如果下一个元素较小,请删除

Ruby 如果下一个元素较小,请删除,ruby,algorithm,Ruby,Algorithm,更新: 在ruby上,如果下一个元素比上一个元素小,我会尝试删除它 输入将是 a = [2,1,3,4,7,6,8] a = [2,3,4,7,8] 因此,输出将是 a = [2,1,3,4,7,6,8] a = [2,3,4,7,8] 显然,如果没有,如果所有元素都是连续的,则不会删除任何元素。跟踪上一个值是什么,并使用“选择”筛选出不需要的值 a.each_cons(2).reject{|x, y| x > y}.map(&:first) + [a.last] # =&

更新: 在ruby上,如果下一个元素比上一个元素小,我会尝试删除它

输入将是

a = [2,1,3,4,7,6,8]
a = [2,3,4,7,8]
因此,输出将是

a = [2,1,3,4,7,6,8]
a = [2,3,4,7,8]

显然,如果没有,如果所有元素都是连续的,则不会删除任何元素。

跟踪上一个值是什么,并使用“选择”筛选出不需要的值

a.each_cons(2).reject{|x, y| x > y}.map(&:first) + [a.last]
# => [1, 3, 4, 6, 8]
prev = - 1.0/0.0 #negative infinity
a.select {|num| delete = (prev < num); prev = num; delete}
prev=-1.0/0.0#负无穷大
a、 选择{num | delete=(prev

在输入[2,1,3,4,7,6,8]上,这会给出输出[2,3,4,7,8]。

我会这样做:

a.each_index.map { |i| a[i] if i < 1 || a[i-1] < a[i] }.compact
 => [2, 3, 4, 7, 8]
a.each_index.map{i|a[i]如果i<1|a[i-1] [2, 3, 4, 7, 8]
a=[2,1,3,4,7,6,8]
prev=a[0]
p.a.e|
prev,prev2=e,prev
上一篇>[2,3,4,7,8]
更新

正如@zetacu所说:


如果有[1,2,3]这样的数组,它会删除第一个数组

不,它不会停止工作

a = [1,2,3]
prev = a[0]
p a.chunk { |e|
  prev, prev2 = e, prev
  prev<prev2
}.flat_map{|i,j| j unless i }.compact
# >> [1, 2, 3]
a=[1,2,3]
prev=a[0]
p.a.e|
prev,prev2=e,prev
上一篇>[1,2,3]

您的问题陈述是错误的。您删除的数字是1和6。它们后面的元素更大,而不是更小。如果下一个元素比上一个元素小,您可能想删除它吗?yuri是的,让我更新它,它为我提供了
[1,3,4,6,8]
。但他想要
[2,3,4,7,8]
@YuriyGolobokov它给我的结果和给你的结果一样。看看我写的输出。OP是矛盾的。oops。是的,这个问题与示例不匹配。这个解决了问题,tnx yuriyi如果你有一个像[1,2,3]这样的数组它删除了第一个one@zetacu不,亲爱的!运行代码,它正在按预期工作..嗯,我的宝贝,也许我在控制台中键入了一些额外的内容如果你有一个像[1,2,3]这样的数组,它会删除第一个数组,嗯,它对我来说工作得很好。它似乎不应该在[1,2,3]上表现不好,因为-Infinity应该小于所有值。这可能是Ruby版本的差异吗?我使用的是2.0.0,你呢?我使用的是Ruby 1.9,出于某种原因,我正在删除第一个。检查prev是否在开始时实际上等于Infinity。这是输出