面试题|pdd二面算法
清香的茉莉
发起于 2 天前
最近编辑于 17 小时前
给你一个数组,其中数组中的每个值与相邻元素之间的差值的绝对值是m,现在给你一个目标值k,找到数组中所有等于k的元素的索引,使用集合返回。
遍历的元素越少越好,无序
List fun(List
就比如[1,2,3,2,1,0,-1,0,1] m=1 k=3 返回[2] ,k一定是数组中的某个值
有思路,但是没写出来,估计是挂了。
我的思路是按照跳表的遍历方式,参考两个极端cur-km和cur+km将索引进行跳跃处理。
private void getK(ArrayList<Integer> list, int m, int k) {
int index = 0;
int len = list.size();
while (index < len) {
int cur = list.get(index);
// 需要的步数
int step = Math.abs(cur - k) / m;
if (step == 0) {
System.out.println(index++);
} else {
index+=step;
}
}
}
作者:清香的茉莉
链接:https://leetcode-cn.com/circle/discuss/AZEIz6/view/JGVU1V/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。