面试题|pdd二面算法--转载

面试题|pdd二面算法
清香的茉莉

发起于 2 天前
最近编辑于 17 小时前
给你一个数组,其中数组中的每个值与相邻元素之间的差值的绝对值是m,现在给你一个目标值k,找到数组中所有等于k的元素的索引,使用集合返回。
遍历的元素越少越好,无序
List fun(List list,int m,int k)
就比如[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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/ache/p/15249852.html