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的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
mongodb在nacos配置
一、引言 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命令的使用。我们既然介绍了在Linux系统(确切的说是CentOS 7上)上如何安装Mong
mongodb在nacos配置 数据库 操作系统 json Server