我有一个整数数组,其中连续元素的差异只有一个
|arr[i]-arr[j]|=1, where |i-j|=1
不使用线性搜索。
假设我们的数组是
arr[]=5,4,3,2,1,0,-1,-2,-1,0,1,2,1;
我们必须找出给定值的第一次出现的索引,例如-1
所以,我们的输出是6
。
我们解决这个问题的方法是什么?
我试过通过获取给定数字和当前元素之间的差异并继续前进。
但我认为我错了,因为它也称为线性搜索。请帮帮我。
答案 0 :(得分:0)
cand <- 0
repeat:
if arr[cand] == x:
done
else:
cand <- cand + |arr[cand]-x|
这个想法是 - 你可以'跳过'cand
到cand + |arr[cand]-x|
之间的每个元素 - 元素不能存在!
答案 1 :(得分:0)
我认为你的方法没问题,因为线性搜索意味着你遍历每个元素一次,直到你找到答案,但你不这样做。