数组是否是循环的?
案例1:-
任务:"a","b“
依赖关系:"a:b“
结果:不循环
说明:第一个"b“执行"a”执行
案例2:-
任务:"a“"b”"c“
依赖关系:"a:b“、"b:c”、"c:a“
结果:循环
说明:a依赖于b,b依赖于c,c依赖于a(循环)
案例3:-
任务:"a“、"b”、"c“、”d“、”e“
依赖关系:"a:b“、"c:d”、“d:e”、“e:C”
结果:循环
说明: c->d,d->e,e->c (循环)
下面是我的代码,它不适用于循环。谁来帮帮我
const cyclicOrNot = () => {
var tasks = ["a", "b", "c",] ,
dependencies = ["a:b","b:c", "c:a",], result = []
var found = false
dependencies.map(i=>{
var dependentitem = i.split(':')[0];
var cyclicResult= checkCyclic(i,dependencies,dependentitem,found);
console.log(cyclicResult)
if(cyclicResult) {
return "cyclic"
}
else {
return "not cyclic"
}
})
}
const checkCyclic = (i,dep,item,found) => {
return dep.every(d=>{
if (i.split(':')[1]===d.split(':')[0]) {
if(item===d.split(':')[0]){
found = true
return found
}
else {
checkCyclic(d,dep,item,found);
}
return found
}
})
}
发布于 2022-03-26 23:58:46
你好,Atchutha rama reddy,请尝试下面的代码:
const cyclicOrNot=(task,dep)=>{
let depA = [],depB=[],isCyclic=false;
dep.map(d=>{
let dr = d.split(':');
depA.push(dr[0]);depB.push(dr[1]);
});
depA.map(a=>{
if(depB.indexOf(a)!==-1){
let opsA = depA[depB.indexOf(a)];
isCyclic = (depB.indexOf(opsA)!==-1)?true:isCyclic;
}
});
console.log(dep.toString()+' is '+(isCyclic?'Cyclic':'Not Cyclic'));
return isCyclic;
}
var tasks = ["a","b"],dependencies = ["a:b"];
cyclicOrNot(tasks,dependencies);
var tasks = ["a", "b", "c",],dependencies = ["a:b","b:c","c:a"];
cyclicOrNot(tasks,dependencies);
var tasks = ["a", "b", "c",'d','e'],dependencies = ["a:b", "c:d",'d:e','e:c'];
cyclicOrNot(tasks,dependencies);
https://stackoverflow.com/questions/71634001
复制相似问题