public int minimumOperations(int[] nums, int start, int goal) {
int n = nums.length;
List<Operator> opList = new ArrayList<>();
opList.add((a, b) -> {
return a - b;
});
opList.add((a, b) -> {
return a + b;
});
opList.add((a, b) -> {
return a ^ b;
});
boolean[] marked = new boolean[1001];
Queue<long[]> q = new LinkedList<>();
q.add(new long[]{start, 0});
marked[start] = true;
while (!q.isEmpty()) {
long[] poll = q.poll();
for (int num : nums) {
for (Operator operator : opList) {
long nx = operator.op(poll[0], num);
if (nx == goal) {
return (int)poll[1] + 1;
}
if (0 <= nx && nx <= 1000 && !marked[(int)nx]) {
marked[(int)nx] = true;
q.add(new long[]{nx, poll[1] + 1});
}
}
}
}
return -1;
}
public interface Operator {
long op(long a, long b);
}
lc-2059
原创wx5be5864e766ab 博主文章分类:java ©著作权
©著作权归作者所有:来自51CTO博客作者wx5be5864e766ab的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
如何知道自己电脑是否支持外置gpu
PCI总线概述 随着通用处理器和嵌入式技术的迅猛发展,越来越多的电子设备需要由处理器控制
如何知道自己电脑是否支持外置gpu ci 驱动程序 初始化